根据对中的条件过滤数据帧

时间:2019-04-09 08:25:11

标签: r

我想过滤下面的数据框,以仅保留“复发”中与“时间”列中的“基础”相比具有较大值的对(患者)。请查看所需的输出。

        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

1 个答案:

答案 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

它的中期效果很好,所以也许您会喜欢这种解决方案。