我需要总结一些数据,并且我正在使用ddply
包中的plyr
函数。数据集有68个变量,我试图取所有变量的均值,按其他两个变量分组。
我正在尝试使用以下代码,但它无效。
ddply(data, c("Var1", "Var2"), summarise, mean = mean(data$Var3 ~ data$Var68))
它向我显示了这条消息:
There were 50 or more warnings (use warnings() to see the first 50)
那是什么问题?
P.S。:Var1是factor
6 levels
,Var2是int
。所有其他变量均为num
。
答案 0 :(得分:4)
data.table
方法:
library(data.table)
setDT(data)
data[ , lapply(.SD, mean), by = .(Var1, Var2)]
添加铃铛和口哨。
答案 1 :(得分:1)
如果您想要基本R方法,可以使用aggregate
。这是一个有效的例子:
aggregate(. ~ g1 + g2, data=df, FUN=mean)
g1 g2 a b c
1 1 0 0.3163713 0.4030635 0.4926396
2 2 0 -0.8909029 0.4211550 0.3286698
3 1 1 -0.5466319 0.9146582 0.2588098
4 2 1 -0.6130626 0.2997645 0.5848791
这计算两个分组变量的三个变量的平均值。相同的代码将计算65个变量的平均值。
数据强>
set.seed(1234)
df <- data.frame(a=rnorm(10), b=runif(10),
g1=sample(1:2, 10, replace=T), g2=rep(0:1, 5))
答案 2 :(得分:1)
我们可以使用dplyr
library(dplyr)
data %>%
group_by(Var1, Var2) %>%
summarise_each(funs(mean = mean(., na.rm = TRUE)))