【发布时间】:2016-08-26 12:47:50
【问题描述】:
我对 R 很陌生,对如何解决以下问题一无所知:(
我的数据集“测试”如下所示
A B C y z
a1 b1 c1 0.10 0
a1 b1 c2 0.01 1
a1 b2 c1 0.20 1
a1 b2 c2 0.10 0
a2 b1 c1 0.10 0
a2 b1 c2 0.01 1
a2 b2 c1 0.20 0
a2 b2 c2 0.30 1
我想通过两个维度“A”和“B”的一些“y”值来聚合我的数据集,这可以通过
> aggregate(x = test$y, by = list(test$A, test$B), FUN=sum)
并返回正确的结果:
Group.1 Group.2 x
a1 b1 1
a2 b1 1
a1 b2 1
a2 b2 1
到目前为止,一切都很好。在这个简单的例子中,我可以显式地编写列名,但是如果我想参数化它们怎么办?有点像
> fields = 'test$A, test$B'
> aggregate(x = test$aL, by = list(.(fields)), FUN=sum)
它会抛出参数必须具有相同长度的错误。 那么如何参数化聚合列表呢?我将非常感谢任何提示。
【问题讨论】:
-
为什么不是
fields <- list(test$A, test$B),然后是aggregate(..., by = fields,..)? -
另一种方法,
fields <- c("A", "B"); aggregate(test$y, test[fields], FUN=sum)。
标签: r list parameter-passing aggregate