我想在 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/