咨询:如何用dplyr直接实现n<2行合并为‘other’并求和
嘿,这事儿用dplyr可以非常简洁地搞定!我给你写个优化后的方案,附示例和解释:
首先假设你的数据集长这样(你可以把列名换成自己实际的列名):
library(dplyr) # 模拟你的样本数据集 sample_df <- tibble( group = c("X", "Y", "Z", "W", "V"), n = c(6, 2, 1, 0, 5) )
接下来就是核心的dplyr代码,几行就搞定合并和求和:
processed_df <- sample_df %>% # 把n<2的组统一重命名为"other" mutate(group = if_else(n < 2, "other", group)) %>% # 按修改后的组名分组,对n求和 group_by(group) %>% summarise(total_n = sum(n), .groups = "drop")
代码解释:
mutate + if_else:用简洁的条件判断,直接把所有n小于2的行的分组列改成"other",其他行保留原分组名;如果需要更复杂的多条件判断,换成case_when也完全可行。group_by(group):基于修改后的分组列聚合数据。summarise(total_n = sum(n)):对每个分组的n求和,.groups = "drop"用来自动取消分组状态,避免后续操作因为残留分组逻辑踩坑。
运行后你会得到这样的结果:
processed_df #> # A tibble: 4 × 2 #> group total_n #> <chr> <dbl> #> 1 X 6 #> 2 Y 2 #> 3 V 5 #> 4 other 1
如果你的分组列不叫group,或者计数列不叫n,直接替换成你实际的列名就行~
内容的提问来源于stack exchange,提问作者Vineet
相关产品推荐
相关产品推荐

