【发布时间】:2015-09-02 02:52:16
【问题描述】:
我有一系列患者入院(下面的数据框“入院”)和一系列事件(第二个数据框称为“事件”)。 我对入院后 5 天内是否发生事件感兴趣。显然,必须在患者 ID ('id') 中进行匹配。
在现实生活中,admissions 数据框在 100k pts 上包含 >500k admissions。一名患者可能有多次入院和多次事件。并非所有患者都会参加活动。
admissions <- structure(list(id = c(1L, 1L, 1L, 2L, 2L, 2L), date = structure(c(16436,
16443, 16574, 16468, 16481, 16494), class = "Date")), .Names = c("id",
"date"), row.names = c(NA, 6L), class = "data.frame")
> admissions
id date
1 1 2015-01-01
2 1 2015-01-08
3 1 2015-05-19
4 2 2015-02-02
5 2 2015-02-15
6 2 2015-02-28
events <- structure(list(id = c(1L, 1L, 2L), date = structure(c(16453,
16578, 16467), class = "Date")), .Names = c("id", "date"), row.names = 7:9, class = "data.frame")
> events
id date
7 1 2015-01-18
8 1 2015-05-23
9 2 2015-02-01
我想我只需要与入院相关的每个事件的最小天数差异(仅考虑正值),并在患者中匹配。
Event 1 (id ==1): +10 days (10 days after 08/01/2015)
Event 2 (id ==1): +4 days
Event 3 (id ==2): -1 days
然后我可以选择那些在我的窗口(可能是 5 天)内的事件。
我的猜测是涉及到 lapply(),但由于某种原因,apply 对我来说并不是很自然(但!)。
【问题讨论】:
-
我不清楚您打算如何比较日期和 ID,因为它们的长度不同。
-
这就是加入的想法......
-
应将事件 1 的日期与患者 1 的所有 3 个入院日期进行比较,并应选择最小(阳性)时间 pan。患者 1 的事件 2 也一样,等等
标签: r data-manipulation