You need to enable JavaScript to run this app. R语言dataframe按id分组取各列最大值并保留字符变量的实现
优惠活动
大模型
产品
解决方案
定价
更多

R语言dataframe按id分组取各列最大值并保留字符变量的实现

实现方法

1. 依赖工具

使用dplyr包完成分组聚合操作,核心逻辑是按id分组后,对不同类型的变量执行不同的聚合规则。

2. 完整代码

首先读取示例数据集:

library(dplyr)

# 构造示例数据
df <- read.table(text = "id time sex Age Comorbidity_Comorbidity
1  1       male   90 1
1  2       male   91 2
1  3       male   92 3
2  1       female  87 1
2  2       female  88 2
2  3       female  89 3
3  1       male  50 1
3  2       male  51 2
3  3       male  52 3
4  1       female  54 1
4  2       female  55 2
4  3       female  56 3", header = TRUE)

执行分组聚合操作:

result <- df %>%
  group_by(id) %>%
  summarise(
    # 所有数值型变量取分组内的最大值
    across(where(is.numeric), max),
    # 所有非数值型变量取分组内的第一个值(同组取值完全一致,取任意值结果相同)
    across(where(~!is.numeric(.)), first)
  )

3. 输出结果

执行上述代码后得到的result即为你需要的数据集:

# A tibble: 4 × 5
     id  time sex      Age Comorbidity_Comorbidity
  <int> <int> <chr>  <int>                   <int>
1     1     3 male      92                       3
2     2     3 female    89                       3
3     3     3 male      52                       3
4     4     3 female    56                       3

如果使用的低版本dplyr不支持where语法,可以用以下替代写法:

result <- df %>%
  group_by(id) %>%
  summarise_if(is.numeric, max) %>%
  left_join(distinct(df, id, sex), by = "id")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:24:04