【发布时间】:2018-05-24 14:32:33
【问题描述】:
假设我们有这个数据框:
x<- as.data.frame(cbind(c("A","A","A","B","B","B","B","B","C","C","C","C","C","D","D","D","D","D"),
c(1,2,3,1,2,3,2,3,1,2,3,4,5,1,2,3,4,5),
c(10,12.5,15,2,3.4,5.7,8,9.5,1,5.6,8.9,10,11,2,3.4,6,8,10.5),
c(1,3,4,1,2,3,4,3,2,2,3,5,2,3,5,4,5,5)))
colnames(x)<- c("ID", "Visit", "Time", "State")
ID 列表示主题 ID。
列Visit表示一系列访问
Time 列表示达到某个“状态”所经过的时间
State 列表示某种疾病的严重程度,其中 5 表示死亡。这意味着你可以从更差的状态波动到更好的状态,但你永远无法从第 5 类提升,因为你已经死了。
我只想确定那些从第 5 类提高到更好的主题,因为这些是数据帧中的错误(即第 13 行和第 16 行)。
此外,我想删除受试者似乎不止一次死亡的那些行(即第 18 行)。
我提出了类似的问题before,但它非常笼统,它暗示所有向更好状态的波动都已从数据集中删除,这不是我真正想要的。
【问题讨论】:
-
这解决了您的问题吗?
-
不,此代码不能解决问题。它突出了一个人第一次达到状态 5 并且没有跟随另一个 5。这不是我真正需要的。一旦受试者死亡(状态 = 5)(即第 13 和 16 行),我需要强调“不可能”的改进。就我而言,我的数据甚至没有排序,所以我也必须考虑变量“时间”。我需要的是一个没有第 13 行和第 16 行的 data.frame。
-
State=5(死亡)怎么可能跟在另一个State=5后面?ID=D似乎发生了这种情况,根据您的解释,这表明同一主题死亡两次。更重要的是,您能否提供示例数据的预期输出? -
嗨@maurits-evers。你说的对。接受的代码解决了问题中最困难的部分,但我们仍然必须删除不止一次死亡的主题,比如你所说的主题 D。我没有解释问题的那一部分。对此感到抱歉。应该删除的实际行是 13、16 和 18。非常感谢!!!
-
这已经被@Uwe 的回答解决了?
标签: r dataframe time-series aggregate