【发布时间】:2017-09-08 23:53:07
【问题描述】:
我正在使用以下方法聚合 R 数据框中的多个列:
data = data.frame(X=c(1, 3, 3), Y=c(2, 3, 3), Z=c(5, 6, 7), ID=c(10, 11, 12))
with(data, aggregate(cbind(Z, ID), list(X=X, Y=Y), c))
但是,我想使用列表变量选择列。我尝试了一些复杂的 paste 语句来查看 this question 和 this question,但我收到诸如“找不到对象 'Z'”之类的错误消息。
如何使用基本 R 以简明易读的方式执行此操作,最好不使用库,do.call 或难以阅读的充满括号和撇号的 paste 语句?理想情况下:
k = c("Z", "ID")
aggregate(magic(k), list(X=X, Y=Y), data, c)
【问题讨论】:
-
aggregate(data[k], data[c("X","Y")], c)涵盖在?aggregate中,有两种语法形式。 -
@Frank:
aggregate(data[k], data[c("X","Y")], c)又短又漂亮!您可以将此作为建议的答案发布。我怀疑会有更好的建议。