【发布时间】:2014-09-17 12:16:10
【问题描述】:
我有一个代表数百名患者 15 年随访数据的数据框。我想创建数据框的一个子集,包括每位患者最近 12 个月的数据。
这是我的数据的一个代表性示例(包括一个缺失值,因为我的实际数据集中有大量缺失数据):
# Create example dataset.
example.dat <- data.frame(
ID = c(1,1,1,1,2,2,2,3,3,3), # patient ID numbers
Date = as.Date(c("2000-02-01", "2004-10-21", "2005-02-06", # follow-up dates
"2005-06-14", "2002-11-24", "2009-03-05",
"2009-07-20", "2005-09-02", "2006-01-15",
"2006-05-18")),
Cat = c("Yes", "Yes", "No", "Yes", "No", # responses to a categorical variable
"Yes", "Yes", NA, "No", "No")
)
example.dat
产生以下输出:
ID Date Cat
1 1 2000-02-01 Yes
2 1 2004-10-21 Yes
3 1 2005-02-06 No
4 1 2005-06-14 Yes
5 2 2002-11-24 No
6 2 2009-03-05 Yes
7 2 2009-07-20 Yes
8 3 2005-09-02 <NA>
9 3 2006-01-15 No
10 3 2006-05-18 No
我需要弄清楚如何对每个 ID 号、最近的记录和过去 12 个月的所有记录进行子集化。
ID Date Cat
2 1 2004-10-21 Yes
3 1 2005-02-06 No
4 1 2005-06-14 Yes
6 2 2009-03-05 Yes
7 2 2009-07-20 Yes
8 3 2005-09-02 <NA>
9 3 2006-01-15 No
10 3 2006-05-18 No
关于 R 中按日期进行子集化的问题已经问过几个问题,但它们通常与来自特定日期或日期范围的数据子集有关,而不是按((可变结束日期)-(时间间隔))进行子集化。
【问题讨论】: