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

使用data.table筛选符合特定诊断日期条件的数据集

使用data.table实现患者诊断数据筛选

首先先明确需求对应的筛选逻辑:

  • 直接排除所有存在2008年诊断记录的患者
  • 剩余患者中,要么是首次诊断年份就是2013年,要么是有早于2008年的诊断记录且同时存在2013年的诊断记录,最终仅保留这些患者的2013年诊断数据

实现代码

先加载data.table包并定义示例数据集,再通过分组计算+筛选完成需求:

library(data.table)

# 示例数据集
dt <- data.table(ID = c(1,1,1,2,2,3,4,5,5,5),
                 diagnosis = c("cancer", "cancer", "cancer", "cancer", "cancer", "cancer", "cancer", "cancer", "cancer", "cancer"),
                 Date = c(2008,2001,2013,2008,2013,2013,2013,2001,2002,2013))

# 第一步:先筛选出符合条件的患者ID
valid_ids <- dt[, .(
  has_2008 = any(Date == 2008),
  first_diagnosis = min(Date),
  has_2013 = any(Date == 2013)
), by = ID][
  !has_2008 & ((first_diagnosis == 2013) | (has_2013 & first_diagnosis < 2008)),
  ID
]

# 第二步:从原数据中提取符合条件ID的2013年诊断记录
result <- dt[ID %in% valid_ids & Date == 2013]

# 查看结果
result

代码解释

  1. 按ID分组计算每个患者的三个关键指标:是否有2008年记录、首次诊断年份、是否有2013年记录
  2. 筛选出满足「无2008年记录」且「首次诊断为2013 或 有2013记录且首次诊断早于2008」的患者ID
  3. 从原数据集里提取这些ID对应的2013年诊断数据

输出结果

运行代码后会得到期望的数据集:

ID diagnosis Date
1:  3    cancer 2013
2:  4    cancer 2013
3:  5    cancer 2013

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:15:31