如何为另一个变量的分位数组找到一个变量的均值和标准差

How to find mean and standard deviation of one variable for quantile groups of another variable

我尝试从其他问题中找到答案,但由于其他问题非常具体或措辞混乱,我无法找到适用于我的情况的确切信息。这里是:

我有两个变量,每个变量有 100 个观察值:

V1 <- rnorm(100, 0, 1) 
V2 <- rpois(100, 4) 
data <- cbind(V1, V2)

我想根据参与者在一个变量(比如 V1)上的分位数对参与者进行分组,然后计算每个分位数组的 V2 的均值和标准差。

要点:我想根据它们与 V1 平均值的标准偏差来创建组。所以我的分位数组应该大致是:底部 2%、第 2 个 p-tile 到第 16 个、第 16 个到第 50 个、第 50 个到第 84 个、第 84 个到第 98 个以及顶部 2%。

您可以不计算分位数,而是对数据进行单位缩放,并使用整数作为类别的分界点。

我们添加一个缩放列:

data <- data.frame(data, V3 = scale(V1))

然后将数据分成类别,切点为 -3 到 3:

data$cats <- cut(data$V3, -3:3, labels = letters[1:6])

最后我们汇总得到每组 V2 的均值和标准差。

aggregate(V2 ~ cats, function(x) c(mean = mean(x), st.dev = sd(x)), data = data)

#  cats  V2.mean V2.st.dev
#1    a 4.666667  2.081666
#2    b 4.352941  2.343640
#3    c 4.030303  1.828333
#4    d 3.838710  1.714580
#5    e 4.000000  3.082207
#6    f 5.000000  2.645751