【发布时间】:2019-09-27 10:17:52
【问题描述】:
我有一个编码障碍,我不知道该怎么做。
我的数据集看起来像这样
df <- data.frame("id" = c("id1", "id1", "id1", "id1", "id2", "id2","id2","id2"),
"time" = c(1,2,4,5,2,3,4,6),
"Treatmentid" = c("1", "2", "1a","3", "1", "4","4a","3"),
"Val" = c(2,3,5,1,2,7,4,1))
其中“id”表示受试者,“Treatmentid”表示受试者正在接受的治疗,“Val”是治疗的值。
通常,治疗会随着时间的推移而持续存在,因此我想对每个人进行汇总,以计算每个时间点接受的总治疗。
问题在于,一些用“a”表示的处理实际上是替代的,而不是添加到没有 a 的处理中。
因此我希望我的最终数据集看起来像这样
final <- data.frame("id" = c("id1", "id1", "id1", "id1", "id2", "id2","id2","id2"),
"time" = c(1,2,4,5,2,3,4,6),
"Treatmentid" = c("1", "2", "1a","3", "1", "4","4a","3"),
"Val" = c(2,3,5,1,2,7,4,1),
"totVal" = c(2,5,8,9,2,9,6,7))
因此,对不同的“Treatmentid”(即时间 2 的 id1,totVal= 2+3= 5)求和总计值。 当修改处理时它们被替换(即对于时间 4 的 id1,totVal= 5+3= 8)。此处,“Treatmentid 1a”(5) 的值替换了“Treatmentid 1”(2) 的值。
我希望这很清楚。
提前感谢大家的帮助
【问题讨论】:
-
For
Treatmentid 1aforid1如果是替换,那么totVal不应该是 7 (5 + 2) 而不是 8 吗?另外,您如何获得最后 2 行的值 6 和 7? -
否,因为处理“1a” (Val=5) 代替了处理“1” (Val=2)。虽然治疗“2”持续存在(Val = 3)。因此 totVal= "1a"+"2"= 5+3= 8.
-
知道怎么做吗?
-
对于每个
id是否只有一种带有“a”的处理?或者可能有多个,如果有很多将如何处理? -
不,很遗憾,“a”可以有很多治疗方法。例如,在某些时候,2 也可以变成“2a”。随着时间的推移,多种治疗方法得到修正
标签: r conditional-statements data-manipulation