我想过滤下面的数据框,以仅保留“复发”中与“时间”列中的“基础”相比具有较大值的对(患者)。请查看所需的输出。
Acc value Patient TT Time
1 GSM771434 4.183034 Patient_1 TT2 Base
2 GSM771435 5.907734 Patient_2 TT2 Base
3 GSM771436 3.787809 Patient_3 TT2 Base
4 GSM771437 3.811790 Patient_1 TT2 relapse
5 GSM771438 4.056306 Patient_2 TT2 relapse
6 GSM771439 4.893940 Patient_3 TT2 relapse
退出:
Acc value Patient TT Time
3 GSM771436 3.787809 Patient_3 TT2 Base
6 GSM771439 4.893940 Patient_3 TT2 relapse
答案 0 :(得分:1)
使用dplyr的tmfmnk解决方案是正确的。
这里是base
中的一个:
idx <- sapply(unique(df$Patient),
function(x) with(df, value[Patient == x][1] < value[Patient == x][2]))
> idx
Patient_1 Patient_2 Patient_3
FALSE FALSE TRUE
> df[idx,]
Acc value Patient TT Time
3 GSM771436 3.787809 Patient_3 TT2 Base
6 GSM771439 4.893940 Patient_3 TT2 relapse
它的中期效果很好,所以也许您会喜欢这种解决方案。