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

如何基于数据收集日期保留DataFrame中每个ID的最早记录?

解决方法:保留每个ID对应的最早日期记录

前提准备

首先需要将date列转换为日期格式,否则无法正确比较日期先后:

df$date <- as.Date(df$date)

方法一:Base R 实现

通过排序+去重的方式,保留每个ID的第一条最早记录:

# 按ID升序、日期升序排序数据框
df_sorted <- df[order(df$ID_number, df$date), ]
# 移除重复的ID,仅保留每个ID的第一条(即最早日期)记录
result_base <- df_sorted[!duplicated(df_sorted$ID_number), ]

方法二:dplyr 包实现(更直观)

借助dplyr的分组筛选功能,直接提取每个ID的最小日期对应记录:

library(dplyr)

result_dplyr <- df %>%
  mutate(date = as.Date(date)) %>%  # 转换日期格式
  group_by(ID_number) %>%           # 按ID分组
  filter(date == min(date)) %>%     # 筛选每组中日期最早的行
  ungroup()                         # 取消分组

注:如果同一ID存在多条日期完全相同的最早记录,dplyr方法会保留所有符合条件的行;Base R方法则仅保留排序后的第一条,可根据实际需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:40:57