问题描述
我拥有大量的患者ID数据集,但手术和放射治疗(RT)疗程之间的间隔时间有所延迟。有些患者可能接受了两次或三种RT治疗。为了确定这些患者,我认为延迟时间超过91天(3个月)。 91天的延迟对应于一次RT治疗的结束和另一项RT治疗的开始。为了分析目的,可以将其设置为61天(2个月)。 如何使两个值之间91天以上的延迟与新的RT处理相对应,并将相应的订单添加到新列中? 我的数据库如下:
df1 <- data.frame (
id = c("a","a","b","c","c"),delay = c(2,3,5,6,7,9,190,195,201,203,205,1299,1303,1306,1307,200,202,204,205))
> df1
id delay
1 a 2
2 a 3
3 a 5
4 a 6
5 b 3
6 b 5
7 b 7
8 b 9
9 b 190
10 b 195
11 b 201
12 b 203
13 b 205
14 b 1299
15 b 1303
16 b 1306
17 b 1307
18 c 200
19 c 202
20 c 204
21 c 205
考虑到第一组延迟之间的时间是否大于100天,我无法产生这样的信息。
df2 <- data.frame (
id = c("a",205),tt_order = c("1st","1st"," 1st"," 2nd","2nd"," 3rd","3rd","1st"))
> df2
id delay tt_order
1 a 2 1st
2 a 3 1st
3 a 5 1st
4 a 6 1st
5 b 3 1st
6 b 5 1st
7 b 7 1st
8 b 9 1st
9 b 190 2nd
10 b 195 2nd
11 b 201 2nd
12 b 203 2nd
13 b 205 2nd
14 b 1299 3rd
15 b 1303 3rd
16 b 1306 3rd
17 b 1307 3rd
18 c 200 1st
19 c 202 1st
20 c 204 1st
21 c 205 1st
感谢您能提供的任何帮助。
解决方法
一种方法是将ImportError: /usr/local/lib/python3.6/dist-packages/open3d/linux/open3d.so...
除以100,然后使用delay
和match
为每个unique
依次获取唯一索引。
id
创建了一个新列library(dplyr)
df2 %>%
group_by(id) %>%
mutate(n_tt = floor(delay/100),n_tt = match(n_tt,unique(n_tt)))
# id delay tt_order n_tt
# <chr> <dbl> <dbl> <int>
# 1 a 2 1 1
# 2 a 3 1 1
# 3 a 5 1 1
# 4 a 6 1 1
# 5 b 3 1 1
# 6 b 5 1 1
# 7 b 7 1 1
# 8 b 9 1 1
# 9 b 150 2 2
#10 b 152 2 2
#11 b 155 2 2
#12 b 159 2 2
#13 b 1301 3 3
#14 b 1303 3 3
#15 b 1306 3 3
#16 b 1307 3 3
#17 c 200 1 1
#18 c 202 1 1
#19 c 204 1 1
#20 c 205 1 1
,用于与n_tt
中的tt_order
进行比较。
@CharlesLDN-也许这就是您想要的。这将查看每个id
内延迟的差异,超过90天的间隔将被视为一种新的治疗方法。
library(tidyverse)
df1 %>%
group_by(id) %>%
mutate(tt_order = cumsum(c(0,diff(delay)) > 90) + 1)
输出
id delay tt_order
<chr> <dbl> <dbl>
1 a 2 1
2 a 3 1
3 a 5 1
4 a 6 1
5 b 3 1
6 b 5 1
7 b 7 1
8 b 9 1
9 b 190 2
10 b 195 2
11 b 201 2
12 b 203 2
13 b 205 2
14 b 1299 3
15 b 1303 3
16 b 1306 3
17 b 1307 3
18 c 200 1
19 c 202 1
20 c 204 1
21 c 205 1