在R中选择一系列变量

时间:2016-07-17 21:52:33

标签: r plyr

我需要总结一些数据,并且我正在使用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

3 个答案:

答案 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)))