我在R中有纵向患者数据。我想根据观察日期在patid列中对患者进行子集划分,其中我只保留第二次观察日期间隔至少48天或更长时间的患者。注意到observation_date可能超过2个日期。
表1:
patid | observation_date |
---|---|
1 | 2016年7月7日 |
1 | 2019年7月7日 |
2 | 2015年5月7日 |
2 | 2016年12月2日 |
3 | 2015年5月7日 |
3 | 2015年6月7日 |
4 | 2015年5月7日 |
4 | 2016 |
以天为单位报告diff
,并筛选出差异小于48天的
library(tidyverse)
library(lubridate)
df <- read_table("patid observation_date
1 07/07/2016
1 07/07/2019
1 07/07/2020
2 07/05/2015
2 02/12/2016
3 07/05/2015
3 07/06/2015
4 07/05/2015
4 02/12/2016") %>%
mutate(observation_date = observation_date %>%
as.Date("%m/%d/%Y"))
df %>%
group_by(patid) %>%
summarise(diff = interval(first(observation_date),
nth(observation_date, 2)) %>% # Select the second observation
as.numeric("days")) %>%
filter(diff >= 48)
# A tibble: 3 x 2
patid diff
<dbl> <dbl>
1 1 1095
2 2 222
3 4 222