【发布时间】:2015-04-07 11:54:39
【问题描述】:
我有一个关于我不知道如何解决的算法的问题。
我有一个如下所示的数据集:
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
【问题讨论】:
-
您能否根据显示的示例使用预期的输出列进行更新
-
你能输入你的数据集吗?谢谢!
-
@akrun 已经完成了!
-
不应该
Time Dose ID TPD0.2 0 2 0.2是0.2 0 2 0吗?您预期表中的第 9 行,即患者id=2在时间 0.2 尚未给药,因此时间仍然为零。 -
dat$TPD = with(dat, ave(Time , list(cumsum(Dose), ID) , FUN=function(x) c(0,cumsum(diff(x)))))为您提供输出,但我不确定您所需的输出是否与您的文本匹配。 id2 的第二行的输出是否应该由0.0而不是0.2输出,因为它们尚未给药?
标签: r