如何用dplyr按条件分组聚合数据框中的轮胎类条目?
使用dplyr实现指定项的聚合合并
嘿,这事儿用dplyr很容易搞定!核心思路是先给数据加一个分组标识列,把所有带"tire"的项归为同一组,再按这个标识列聚合求和即可。
完整代码示例
假设你的原始数据框名为data,可以这样写:
library(dplyr) aggregated_data <- data %>% # 新增分组列:匹配tire的项归为"Tires",其余保留原名称 mutate(group_label = if_else( grepl("tire", Item, ignore.case = TRUE), "Tires", Item )) %>% # 按分组列分组 group_by(group_label) %>% # 对每个分组的Count求和 summarise(Count = sum(Count)) %>% # 把分组列改回原列名Item rename(Item = group_label) %>% # 可选:解除分组状态(后续操作不需要分组时建议加上) ungroup()
代码逐行解释
mutate(...):通过grepl忽略大小写检测Item列是否包含"tire",匹配成功的项标记为"Tires",其他项保留原名称,生成新的分组标识列group_label。group_by(group_label):基于新的分组列对数据分组,把所有属于"Tires"的项归为一组。summarise(Count = sum(Count)):对每个分组的Count列求和,完成聚合。rename(Item = group_label):把临时的分组列名改回你需要的Item,还原目标格式。ungroup():可选操作,如果你后续不需要保持数据的分组状态,执行这一步可以避免意外问题。
运行这段代码后,你就能得到想要的结果:所有带tire的项合并为"Tires",Count求和为22,其他项保持原样。
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

