R语言中如何按列值条件将数据集多行求和合并为单独一行
数据处理实现方案
基于dplyr(tidyverse)的实现
常用tidyverse生态可直接使用以下代码得到符合要求的结果:
library(dplyr) # 将下方raw_df替换为你实际的数据集名称 processed_df <- raw_df %>% # 将物种数低于40的科统一标记为Others mutate(Family = ifelse(Species_n < 40, "Others", Family)) %>% # 按处理后的科名分组,对物种数求和 group_by(Family) %>% summarise(Species_n = sum(Species_n), .groups = "drop") %>% # 按物种数降序排序,适配后续直方图绘制的顺序需求 arrange(desc(Species_n))
基础R实现
无需额外安装包的原生R解法:
# 将下方raw_df替换为你实际的数据集名称 raw_df$Family <- ifelse(raw_df$Species_n < 40, "Others", raw_df$Family) processed_df <- aggregate(Species_n ~ Family, data = raw_df, sum) # 可选:按物种数降序排序 processed_df <- processed_df[order(-processed_df$Species_n), ]
两种方法均可实现需求,运行后物种数低于40的科会被合并为Others行,对应数值为所有符合条件的科物种数总和,完全匹配你给出的示例预期结果。
内容的提问来源于stack exchange,提问作者BenedettaG
相关产品推荐
相关产品推荐

