微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在R中按字符串列名聚合

我想将data.frame中的数据分组为两列,然后对特定的第三列求和.例如:

> aggregate(mpg~gear+cyl,data=mtcars,FUN=sum)
  gear cyl   mpg
1    3   4  21.5
2    4   4 215.4
3    5   4  56.4
4    3   6  39.5
5    4   6  79.0
6    5   6  19.7
7    3   8 180.6
8    5   8  30.8

现在,我需要为不同的列多次执行此操作.所以我想编写一个概括它的函数.它采用data.frame和其中一个列(为了简单起见)并做同样的事情.

agg.data <- function(df,colname) {
  aggregate(mpg~gear+colname,data=df,FUN=sum) 
}

运行这将产生:

Error in eval(expr,envir,enclos) : object 'colname' not found

如何将colname的值传递给聚合?

解决方法

将公式的字符串表示粘贴在一起,并将该字符串作为参数传递给formula()…

agg.data <- function(df,colname) {
  aggregate(formula(paste0("mpg~gear+",colname)),FUN=sum) 
}

> agg.data(mtcars,"cyl")
  gear cyl   mpg
1    3   4  21.5
2    4   4 215.4
3    5   4  56.4
4    3   6  39.5
5    4   6  79.0
6    5   6  19.7
7    3   8 180.6
8    5   8  30.8

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐