使用R中的时间-按ID对时间间隔进行分类
我真的很感激能在我在R中努力解决的问题上得到一些帮助 我有一个带有一系列ID、日期和处理的数据框。我的最终目标是统计在给定时间范围内通过治疗发生在ID上的事件数 比如说, ID在三个月内接受两次治疗,在六个月内接受四次治疗。我希望有一系列的条件列来计算出现的次数 数据框的结构类似于:使用R中的时间-按ID对时间间隔进行分类,r,data.table,R,Data.table,我真的很感激能在我在R中努力解决的问题上得到一些帮助 我有一个带有一系列ID、日期和处理的数据框。我的最终目标是统计在给定时间范围内通过治疗发生在ID上的事件数 比如说, ID在三个月内接受两次治疗,在六个月内接受四次治疗。我希望有一系列的条件列来计算出现的次数 数据框的结构类似于: ID date treatment 1A 20/09/2015 A 1A 21/09/2015 B 1A 22/10/2015 A 2A 22/09/2015 C 2A
ID date treatment
1A 20/09/2015 A
1A 21/09/2015 B
1A 22/10/2015 A
2A 22/09/2015 C
2A 20/10/2015 C
我的最终目标是拥有像
ID date treatment
1A 01/01/2016 A
1A 01/03/2016 A
1A 01/04/2016 A
1A 01/05/2016 A
1A 01/11/2016 A
2A 01/01/2016 A
2A 01/09/2016 A
分组到
ID a_within_3_months a_within_6_months...
1A 3 1
2A 0 0
我确信这在data.table中一定是可能的,但我正在努力找出如何根据我想要的条件计算行数
我希望这是明确的-高兴地提供更多的细节是有益的
非常感谢您在这个问题上的帮助!谢谢您的时间。这可能就是您想要的:
> first_date <- as.Date(
as.character(20140612),
"%Y%m%d")
> data<- data.frame(
ID=c(rep(1,5), rep(2,5)),
date=seq(first_date, by="1 day", length.out=10),
trtm=c(rep("a",3), rep("b",2), rep("c",3), rep("d",2)))
data
ID date trtm
1 2014-06-12 a
1 2014-06-13 a
1 2014-06-14 a
1 2014-06-15 b
1 2014-06-16 b
2 2014-06-17 c
2 2014-06-18 c
2 2014-06-19 c
2 2014-06-20 d
2 2014-06-21 d
> data <- data.table(data)
> data[,.( within=max(date)-min(date),
n_of_trtm=length(date) ),
by=.(ID,trtm)]
ID trtm within n_of_trtm
1: 1 a 2 days 3
2: 1 b 1 days 2
3: 2 c 2 days 3
4: 2 d 1 days 2
>第一个日期数据[,(以内=最大(日期)-最小(日期),
n_of_trtm=长度(日期)),
by=(ID,trtm)]
ID trtm在n_trtm内
1:1A 2天3
2:1 b 1天2
3:2 c 2天3
4:2天1天2
我不清楚“3个月内”是什么意思-它是连续3个月内的最大值,还是从第一次约会开始,还是…?我认为您需要创建一个可复制的示例。一些指导:谢谢你的回复,埃迪。因此,在这种情况下,我想计算ID在第一次约会后的三个月内再次接受治疗的次数谢谢Frank,我会看一看并尝试创建这个。回复评论时,请使用@
通知您回复的人;例如,您最后的评论应该包括@Eddi
和@Frank
,以便这些用户收到通知。这些用户很可能从未看到过你的最后两条评论。看(这就是我发现这个问题的原因)。太好了!这真的很有帮助,回答了我的问题。非常感谢。