我试图从其他问题中找到答案,但是由于其他问题的针对性很强或措辞混乱,我无法找到适合我情况的确切信息。去吧:
我有两个变量,每个变量有100个观察值:
V1 <- rnorm(100, 0, 1)
V2 <- rpois(100, 4)
data <- cbind(V1, V2)
我想根据参加者对一个变量(例如V1)的分位数进行分组,然后为每个分位数组计算V2的均值和标准差。
主要注意事项:我想根据它们与V1的平均值之间的标准差多少来创建组。因此,我的分位数组应该大致为:最低2%,第二个p-tile至第16、16至50、50至84、84至98,以及前2%。
答案 0 :(得分:0)
除了计算分位数,您还可以对数据进行单位换算,并使用整数作为类别的切入点。
我们添加了一个缩放列:
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