r - R中的聚合函数使用列索引号而不是名称

标签 r aggregate

我想在 R 中使用聚合函数,使用列索引号来标识要聚合的数据框列,而不是列名。

这是一个使用列名的示例:

df = data.frame(A = c("a", "a", "b", "b", "c", "c"), B = 1:3, C = 1:3, D = 1:3)
aggregate(cbind(B, C, D) ~ A, data = df, sum)

但我不想在 cbind 中列出 B、C 和 D,而是要指示它使用列 2:4。

最佳答案

我们可以只使用 . 来指定其余的列

aggregate(. ~ A, data = df, sum)
  A B C D
1 a 3 3 3
2 b 4 4 4
3 c 5 5 5

或者如果我们特别想要位置索引,将数据子集化并转换为matrix

aggregate(as.matrix(df[2:4]) ~ A, data = df, sum)
A B C D
1 a 3 3 3
2 b 4 4 4
3 c 5 5 5

或者使用dplyr

library(dplyr)
df %>%
     group_by(A) %>%
     summarise(across(all_of(names(.)[2:4]), sum))

关于r - R中的聚合函数使用列索引号而不是名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68145836/

相关文章:

r - 确定超出的持续时间

r - 为什么我会得到 "unused argument (na.action = NULL)"聚合错误?

c# - Linq - 如何聚合另一个查询的结果

r - 将<NA>设置为空白

r - 在 R 中计算 big.matrix 的对角线

r - 如何从所需的包中调试未导出的函数?

r - 不同的 y 轴标签 facet_grid 和大小

elasticsearch - 如何使用脚本聚合 'ip'字段

c++ - 用花括号聚合初始化

python - 使用 apply、transform、agg - Python Pandas 时如何引用 groupby 索引?