首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R中的聚合命令,是否删除列?

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

Stack Overflow用户
提问于 2014-11-27 16:42:26
回答 2查看 2.5K关注 0票数 2

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

代码语言:javascript
代码运行次数:0
运行
复制
aggregate(dataframe,list(name=variable),mean)

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

EN

回答 2

Stack Overflow用户

发布于 2014-11-27 16:53:06

如果要将函数应用于select columns 2 and 3 (数字索引)

代码语言:javascript
代码运行次数:0
运行
复制
 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

或者,您可以用列名替换数字索引

代码语言:javascript
代码运行次数:0
运行
复制
 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

代码语言:javascript
代码运行次数:0
运行
复制
 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

代码语言:javascript
代码运行次数:0
运行
复制
 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

数据

代码语言:javascript
代码运行次数:0
运行
复制
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)))
票数 2
EN

Stack Overflow用户

发布于 2014-11-27 16:57:54

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

代码语言:javascript
代码运行次数:0
运行
复制
aggregate(cbind(Var2mean1, Var2mean2) ~ groupvar, data = dataframe, FUN = mean)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27166338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档