我有四个数据表,其中三个有三个不同程序的日期,一个表有感染的日期和诊断感染的体征。首先,我想确定哪个手术与感染迹象相关,然后应用预定标准来确定是否是实际感染。感染发作时间是感染日期和手术日期之间的差异(感染前最后一次手术)。为了确定哪种手术与感染相关,我们考虑感染发作前最后一次手术日期与感染日期之间的时间差小于1年。感染的标准是手术后感染发作时间小于1年,发热=是,出院=是,且培养=阳性。
我确实使用了merge函数先合并各种表,然后使用as.duration来识别手术日期和感染日期之间的差异,但这看起来很奇怪。
有人能帮我吗?我的数据示例如下。
dt1 = data.table(
participant.id = c("1","2","3", "3"),
date.procedure1 = c("2000-11-19", "2003-08-29", "2000-01-08", "2002-03-08"),
repeat.instance.procedure1 = c("1", "1", "1", "2")
)
dt2 = data.table (participant.id = c("1","2","3"),
date.procedure2 = c("2000-10-19", "2003-07-02", "1999-12-12"),
repeat.instance.procedure2 = c("1", "1", "1")
)
dt3 = data.table (participant.id = c("1","1", "2","2" ,"3"),
date.procedure3 = c("2002-10-19","2004-10-10", "2006-10-02", "2010-10-10", "2009-01-12"),
repeat.instance.procedure3 = c("1", "2", "1", "2", "1")
)
dt4 = data.table (
participant.id = c("1", "2", "3"),
date.infection = c("2001-05-10", "2007-02-10", "2002-03-25"),
repeat.instance.infection = c("1", "1", "1"),
fever = c("yes", "no", "yes"),
discharge = c("yes", "no", "yes"),
culture = c("positive", "positive","negative"),
pain = c("yes", "yes", "yes")
)
1条答案
按热度按时间wbgh16ku1#
如果我按照您的要求进行操作,我认为您希望将前三个表堆叠成一个表,并为该过程创建一个字段“type(1、2或3)。然后由于每个患者仅感染一次,可以使用左连接合并感染日期。然后,您可以为每一行构建一个感染日期和治疗日期之间差异的变量,并确定它是否为阳性和我对sql_df和dplyr包都这样做了,以检查结果。
返回:
然后合并感染日期并创建变量差异和关联
返回:
然后过滤掉错误的关联
其产生
你可以用
患者1接受了两次治疗,间隔一个月,然后在大约6个月后感染。您可以通过以下方式选择每个患者的最后一行:
然后筛选其中的keep == 1。希望这回答了您的问题。