You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何按record_id分组汇总,每组仅留1行且存在var=1时标记为1

你之前的写法问题在于:mutate()是为分组后的每一行数据单独计算新列值,不会合并分组结果,因此无法直接得到每个record_id仅一行的汇总结果,你需要使用summarise()函数完成分组聚合操作。


方案1:tidyverse(dplyr)实现

以下两种写法均可达成需求:

  • 用any()判断组内是否存在1,逻辑更直观:
library(dplyr)
data_sol <- data %>%
  group_by(record_id) %>%
  summarise(var = as.integer(any(var == 1))) %>%
  ungroup()
  • 利用0/1变量的特性直接取最大值,代码更简洁:
library(dplyr)
data_sol <- data %>%
  group_by(record_id) %>%
  summarise(var = max(var)) %>%
  ungroup()

方案2:base R实现

用aggregate()函数完成分组聚合,无需加载第三方包:

data_sol <- aggregate(var ~ record_id, data = data, FUN = max)

两种方案的输出结果均和你给出的预期示例完全一致。

内容的提问来源于stack exchange,提问作者Cisco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 08:06:03