如何在R中同时使用sumCol与aggregate实现数据框按人员汇总求和?
解决方案:结合行求和与aggregate实现需求
思路
先计算每行中所有item列的数值总和,再通过aggregate按Persons分组,将同一人员的所有行总和累加。
代码实现
1. 构造示例数据
df <- data.frame( Persons = c(1,1,2,3,1), item1 = c(0,2,1,0,1), item2 = c(1,2,2,1,1), item3 = c(3,4,4,1,1) )
2. 分步处理
# 新增临时列,存储每行item列的总和 df$row_total <- rowSums(df[, startsWith(colnames(df), "item")]) # 用aggregate按Persons分组,累加行总和 result <- aggregate(row_total ~ Persons, data = df, sum) # 重命名列名匹配需求格式 colnames(result) <- c("Persons", "Items") # 查看结果 print(result)
3. 优雅的嵌套写法(无需临时列)
result <- aggregate( rowSums(df[, startsWith(colnames(df), "item")]) ~ Persons, data = df, sum ) colnames(result) <- c("Persons", "Items")
运行结果
Persons Items 1 1 15 2 2 7 3 3 2
内容的提问来源于stack exchange,提问作者chrispsv
相关产品推荐
相关产品推荐

