在R中合并DataFrame:按ID聚合并标记错误是否出现
实现方法
基础R方案(无需额外包)
用aggregate()函数按id分组,对每个error列取最大值——因为只要该ID下出现过1次错误(值为1),最大值就是1,否则为0,正好匹配需求:
df_result <- aggregate(. ~ id, data = df, FUN = max)
运行后得到目标结果:
> df_result id error_1 error_2 error_3 1 1 1 1 1 2 2 0 0 1
tidyverse方案(更易读)
如果习惯用tidyverse工具链,用dplyr的分组汇总逻辑更直观:
先加载dplyr包:
library(dplyr)
再执行分组汇总:
df_result <- df %>% group_by(id) %>% summarise(across(starts_with("error_"), max), .groups = "drop")
这里across(starts_with("error_"), max)指定对所有以error_开头的列取最大值,.groups = "drop"用于取消分组状态,得到普通数据框。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

