在 R 中选择一系列变量

Selecting a range of variables in R

我需要总结一些数据,我正在使用 plyr 包中的函数 ddply。数据集有 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 是 factor6 levels,Var2 是 int。所有其他变量都是 num.

data.table方法:

library(data.table)
setDT(data)

data[ , lapply(.SD, mean), by = .(Var1, Var2)]

添加花里胡哨的味道。

如果你想要基本的 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))

我们可以使用dplyr

library(dplyr)
data %>%
     group_by(Var1, Var2) %>%
     summarise_each(funs(mean = mean(., na.rm = TRUE)))