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

如何在R语言中删除冗余行,保留患者最大年龄记录?

保留每个患者年龄最大的完整记录

下面提供几种R语言的解决方案,都能保留原数据的所有列:

方法1:使用dplyr包(语法直观,推荐)

如果还没安装dplyr,先执行安装命令,之后加载包并处理数据:

install.packages("dplyr")
library(dplyr)

# 简洁写法:直接取每组年龄最大的一行
df_oldest <- df %>%
  group_by(RANDID) %>%
  slice_max(order_by = AGE, n = 1) %>%
  ungroup()

# 另一种写法:筛选组内年龄等于最大值的行
df_oldest <- df %>%
  group_by(RANDID) %>%
  filter(AGE == max(AGE)) %>%
  ungroup()
  • 如果同一患者存在多条年龄相同且为最大值的记录,第一种写法的n=1会只保留第一条;若想保留所有这类记录,删掉n=1即可。

方法2:使用base R(无需额外安装包)

基于你已经写的aggregate,通过合并数据来保留全列:

# 先计算每个患者的最大年龄
max_age <- aggregate(AGE ~ RANDID, data = df, max)
# 合并原数据与最大年龄表,筛选匹配的完整记录
df_oldest <- merge(df, max_age, by = c("RANDID", "AGE"))

方法3:使用data.table包(大数据场景更高效)

适合处理百万级以上的数据集,执行速度更快:

install.packages("data.table")
library(data.table)

# 转换为data.table格式
setDT(df)
# 按患者分组,提取年龄最大的记录
df_oldest <- df[, .SD[AGE == max(AGE)], by = RANDID]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:22:06