r - 如何将聚合与列名列表一起使用

标签 r aggregate

你是怎么抽象的aggregate在函数中通过传递条件和值列表来总结?

# This works fine:
x <- data.frame(cond1 = sample(letters[1:3], 500, replace=TRUE), 
                cond2 = sample(LETTERS[1:7], 500, replace = TRUE), 
                cond3 = sample(LETTERS[1:4], 500, replace = TRUE), 
                value1 = rnorm(500), 
                value2 = rnorm(500))

aggregate(cbind(value1,value2) ~ cond1 + cond2, data = x, FUN=sum)

需要创建列名列表:(显示 3 个选项)然后调用函数:
c1 <- c("cond1","cond2","cond3"); v1 <- c("value1","value2")
c1 <- c("cond2","cond3");         v1 <- c("value2")
c1 <- c("cond3");                 v1 <- c("value1")

aggregate(cbind(v1) ~ c1, data = x, FUN=sum)

我已经审查了许多替代方案,但还没有发现这种抽象的关键。

最佳答案

您可以使用 aggregate 的替代接口(interface),它不使用公式:

c1 <- c("cond1","cond2","cond3")
v1 <- c("value1","value2")
aggregate(x[v1],by=x[c1],FUN=sum)

   cond1 cond2 cond3     value1      value2
1      a     A     A -3.3025839 -0.98304649
2      b     A     A  0.6326985 -3.08677485
3      c     A     A  3.6007853  2.23962265
4      a     B     A -0.5247620 -0.94644740
5      b     B     A  0.9242562  2.48268452
6      c     B     A  6.9215712  0.31512645

关于r - 如何将聚合与列名列表一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18521811/

相关文章:

mongodb - 在 Mongo 聚合中,可以通过分组生成 3 个不同的计数

python - Pandas df groupby 不同列上的某些匹配

mysql形成子数组(数组聚合)并返回

r - 比 R 中的aggregate() 更快的函数

r - 检测每个数据帧行与向量中的值之间至少有一个匹配项

rvest:xpath 获取当前节点处的文本,并删除子节点

r - 如何对元素包含字母和数字的字符向量进行排序?

mongodb - 如何在 mongodb $lookup 聚合中使用 NOT IN 数组条件

r - 在 SparkR 中使用 CRAN 包

r - 如何在R中读取utf-8格式的数据?