Фильтровать фрейм данных на основе условий в парах - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу отфильтровать нижеприведенный фрейм данных, чтобы сохранить только те пары (Пациент), у которых значение «рецидив» больше, чем «База» в столбце «Время». Пожалуйста, смотрите желаемый результат.

        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 Ответ

1 голос
/ 09 апреля 2019

tmfmnk решение с dplyr является правильным.

Вот один с 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

У него хороший промежуточный результат, поэтому, возможно, вам не безразлично это решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...