我有一个数据集,记录了患者接受手术的日期
data1<-tribble(
~MRN, ~date_in_room,
1, "2015-01-02"
) %>% mutate(date_in_room = as.Date(date_in_room))
以及具有在手术前几天内进行的大量血压测量的第二数据集。有三种不同的血压测量:SBP、DBP,平均值:
library(dplyr)
data2<-tribble(
~MRN, ~event, ~date, ~value,
1, "sbp", "2014-12-31", 120,
1, "sbp", "2015-01-01", 119,
1, "sbp", "2015-01-02", 125,
1, "dbp", "2015-01-01", 80,
1, "dbp", "2015-01-02", 84,
1, "mean", "2015-01-01", 100
)%>% mutate(date = as.Date(date))
我想加入这两个数据集,但只保留每种类型的血压测量值,从最接近 * 之前 * 的日期到手术日期(通常是前一天,可能更多)。
desired<-tribble(
~mrn, ~event, ~date, ~value, ~date_in_room,
1, "sbp", "2015-01-01", 119, "2015-01-02",
1, "dbp", "2015-01-01", 80, "2015-01-02",
1, "mean", "2015-01-01", 100, "2015-01-02"
) %>% mutate(date_in_room = as.Date(date_in_room),
date=as.Date(date)
我想大概是
data1 |>
group_by(MRN, event) |>
left_join(data2, by=MRN) |>
...?
谢谢你的任何想法!
1条答案
按热度按时间q8l4jmvw1#
您可以在
join_by()
中使用closest()
辅助函数。有关详细信息,请参阅documentation。数据
我修改了您的数据,使
date
列属于date
类。