R中的聚合命令,删除列?

时间:2014-11-27 08:42:26

标签: r

我的聚合命令根据特定变量获取所有列的平均值。我希望它只将函数应用于某些列。我的代码采用以下格式进行聚合:

aggregate(dataframe,list(name=variable),mean)

这给了我基于特定变量的不同列的平均值。我想有选择地选择我的列。

2 个答案:

答案 0 :(得分:2)

如果要应用选择列2 and 3(数字索引)

的功能
 aggregate(dat1[,2:3], list(name=dat1[,'variable']), FUN=mean)
 #   name   V1   V2
 #1    A 10.2 11.2
 #2    B 12.8  7.6

或者您可以使用列名

替换数字索引
 aggregate(dat1[,c("V1", "V2")], list(name=dat1[,'variable']), FUN=mean)
 #  name   V1   V2
 #1    A 10.2 11.2
 #2    B 12.8  7.6

或使用dplyr

 library(dplyr)
 dat1 %>%
      group_by(variable) %>%
      summarise_each(funs(mean=mean(., na.rm=TRUE)), V1,V2)
 #  variable   V1   V2
 #1        A 10.2 11.2
 #2        B 12.8  7.6

或使用data.table

 library(data.table)
 setDT(dat1)[, lapply(.SD, mean), by=variable, .SDcols=colnames(dat1)[2:3]]
 #  variable   V1   V2
 #1:        A 10.2 11.2
 #2:        B 12.8  7.6

数据

set.seed(24)
dat1 <- cbind(variable=rep(LETTERS[1:2], each=5),
       as.data.frame(matrix(sample(1:20, 10*5, replace=TRUE), ncol=5)))

答案 1 :(得分:0)

您可以尝试使用公式进行定义:

aggregate(cbind(Var2mean1, Var2mean2) ~ groupvar, data = dataframe, FUN = mean)