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

R语言如何按ID分组提取日期列最小值并创建新变量

R按分组为所有行填充组内最小日期的实现方法

你可以根据自己使用的工具链选择对应方案,所有方案输出结果和你给出的预期完全一致:

  • dplyr 方案(最易读,适合常规数据处理)
library(dplyr)

df <- df %>% 
  group_by(ID) %>% 
  mutate(NewDate = min(Date)) %>% 
  ungroup()

mutate在分组状态下会自动把组内计算得到的最小日期值,填充到对应ID组的每一行,不需要手动做重复值拼接。如果组内存在缺失的日期值,可以把min(Date)改成min(Date, na.rm = TRUE)避免返回NA。

  • data.table 方案(性能最优,适合百万行级以上大数据)
library(data.table)
setDT(df)
df[, NewDate := min(Date), by = ID]

运行后直接在原数据框上新增列,不需要额外赋值,内存占用和运行速度都明显优于dplyr方案。

  • 基础R方案(无需加载第三方包)
df$NewDate <- as.Date(
  ave(as.numeric(df$Date), df$ID, FUN = min),
  origin = "1970-01-01"
)

由于R的Date类型本质是以1970-01-01为原点的数值存储,用ave分组计算时需要先转成数值算最小值,再转回Date类型避免类型错误。

内容的提问来源于stack exchange,提问作者Saïd Maanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:12:20