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

R语言按ID分组提取最早startDate和最晚endDate的高效实现方法

R语言按ID分组提取最早起始日期与最晚结束日期的高效实现

核心思路是分组后直接聚合计算,仅需一次分组扫描即可完成需求,无需拆分数据集再关联,运行效率远高于原有方案。

方法1:dplyr实现(适配常规数据量)

library(dplyr)

# 可选步骤:将字符串日期转为标准Date类型,避免非标准格式的字符串排序出错
data <- data %>%
  mutate(
    startDate = as.Date(startDate),
    endDate = as.Date(endDate)
  )

# 分组直接汇总
result <- data %>%
  group_by(ID) %>%
  summarise(
    startDate = min(startDate, na.rm = TRUE),
    endDate = max(endDate, na.rm = TRUE)
  )

参数说明:na.rm = TRUE 用于跳过组内的NA值计算,若不加该参数,组内存在NA时会返回NA结果,适配你示例中的空值场景。

方法2:data.table实现(适配百万级以上大数据量)

如果你的数据集规模很大,data.table的运行效率会比dplyr高3-10倍:

library(data.table)

# 转换为data.table格式
setDT(data)

# 转标准日期格式+分组汇总一步完成
result <- data[, .(
  startDate = min(as.Date(startDate), na.rm = TRUE),
  endDate = max(as.Date(endDate), na.rm = TRUE)
), by = ID]

两种方法输出的结果和你预期的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:36:03