如何按特定规则汇总重复行?基于Plant与n分组处理Plot列
解决方案
用dplyr实现分组汇总
假设你的数据框名为df,可以通过以下代码完成需求:
- 先确保安装并加载dplyr包:
install.packages("dplyr") # 首次使用需安装 library(dplyr)
- 执行分组汇总:
df_summary <- df %>% group_by(Plant, n) %>% summarise(across(Plot1:Plot3, ~ ifelse(any(.x == 1, na.rm = TRUE), 1, NA)), .groups = "drop")
代码说明
group_by(Plant, n):按Plant和n进行分组across(Plot1:Plot3, ...):批量处理Plot1到Plot3列ifelse(any(.x == 1, na.rm = TRUE), 1, NA):检查组内当前列是否存在值1(忽略空值),存在则保留1,否则返回NA(输出时会显示为空白).groups = "drop":汇总后取消分组状态,得到普通数据框
处理空白字符串的情况
如果原始数据中的空值是空白字符串(而非NA),先转成NA再执行汇总:
df <- df %>% mutate(across(Plot1:Plot3, ~ na_if(.x, "")))
最终结果
运行后得到的df_summary与你期望的格式一致:
Plant n Plot1 Plot2 Plot3 A 5 1 1 B 4 1 1 C 3 1
内容的提问来源于stack exchange,提问作者Shg456
相关产品推荐
相关产品推荐

