在R中按Size整数区间汇总DataFrame的Age列,选用什么函数?
解决方案
你不需要用rowwise()和mutate(),这类分组汇总需求用**group_by() + summarize()**组合更直接高效,核心思路是先按Size的整数部分分组,再对Age列求和。
步骤1:构造示例数据
先还原你的数据集:
df <- data.frame( Size = c(8, 8.5, 9, 9.5), `Age 1` = c(2, 4, 1, 3), `Age 2` = c(8, 7, 11, 2), `Age 3` = c(5, 9, 45, 0) )
步骤2:分组汇总
用floor()函数提取Size的整数部分作为分组依据,再对所有Age列求和:
library(dplyr) df_summary <- df %>% # 把Size转为整数部分,作为分组键 group_by(Size = floor(Size)) %>% # 对所有以Age开头的列求和 summarize(across(starts_with("Age"), sum), .groups = "drop")
运行后得到的结果就是你要的:
Size `Age 1` `Age 2` `Age 3` 1 8 6 15 16 2 9 4 13 45
补充说明
floor()函数会向下取整,刚好把8.5归为8、9.5归为9,完美匹配你的分组规则;across(starts_with("Age"), sum)可以批量处理所有Age列,不用逐个列名写,扩展性更强;.groups = "drop"是为了分组后返回普通数据框,避免保留分组属性。
内容的提问来源于stack exchange,提问作者Valentina Caserta
相关产品推荐
相关产品推荐

