如何计算R中两个事件之间的时差?

时间:2015-04-07 11:54:40

标签: r

我对一个我不知道如何解决的算法有疑问。

我有一个如下所示的数据集:

Time Dose ID
0     0   1
0.1   1   1
0.2   0   1
0.3   0   1
0.4   1   1
0.5   0   1
0.7   0   1
0     0   2
0.2   0   2
0.3   1   2
0.4   0   2
0.6   0   2
0.8   1   2
0.9   0   2
1.0   1   2
1.5   0   2

数据集中有许多科目,每个科目在不同时间给药。我想要计算的是计算一列数据,即每个受试者最后一次给药后的时间。由于每个受试者多次给药,如何更新从R程序中减去的时间?谢谢!

预期的外观将是:

Time Dose ID TPD
0     0   1   0
0.1   1   1   0
0.2   0   1   0.1
0.3   0   1   0.2
0.4   1   1   0
0.5   0   1   0.1
0.7   0   1   0.3
0     0   2   0
0.2   0   2   0.2
0.3   1   2   0
0.4   0   2   0.1
0.6   0   2   0.3
0.8   1   2   0
0.9   0   2   0.1
1.0   1   2   0
1.5   0   2   0.5

1 个答案:

答案 0 :(得分:1)

也许这就是你要找的东西

library(dplyr)
df %>% arrange(ID, Time) %>% group_by(ID) %>% 
  mutate(TPD=(Time-cummax(Time*Dose))*cummax(Dose)) %>% ungroup

<强> 数据

df <- data.frame(Time=c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0, 0.2, 0.3, 0.4, 0.6, 0.8, 0.9, 1.0, 1.5),  
             Dose=c(0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0), 
             ID=c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2))

如果您的数据未排序,则:

library(dplyr)
df %>% arrange(ID, Time) %>% group_by(ID) %>% 
  mutate(TPD=(Time-cummax(Time*Dose))*cummax(Dose)) %>% ungroup