Как исключить столбцы при разных условиях в R? - PullRequest
0 голосов
/ 30 мая 2019

вот мой пример:

TR1    COR2   DR3   VAR1 VAR2 P

0,1    0,3    0,23  10    12  3
0,2    0,4    0,45  12    13  0

Вот мое сомнение: лучший способ сделать заключение, что, если он найдет какое-то значение p = 3, он должен исключить 3 первых столбца, если нет P = 3, но если он найден, P = 2 для удалите 2 первых столбца, но нет ни P = 3, ни P = 2, но если вы найдете P = 1, удалите первый столбец

Если мой стол:

TR1    COR2   DR3   VAR1 VAR2 P

0,1    0,3    0,23  10    12  3
0,2    0,4    0,45  12    13  2

Результаты должны выглядеть следующим образом:

                   VAR1  VAR2 P

                    10    12  3
                    12    13  2

Если мой стол:

    COR2   DR3   VAR1 VAR2 P

    0,3    0,23  10    12  2
    0,4    0,45  12    13  1

Результаты должны выглядеть следующим образом:

                   VAR1  VAR2 P

                    10    12  2
                    12    13  1

Если мой стол:

       DR3   VAR1 VAR2 P

       0,23  10    12  1
       0,45  12    13  0

Результаты должны выглядеть следующим образом:

                   VAR1  VAR2 P

                    10    12  1
                    12    13  0

1 Ответ

1 голос
/ 30 мая 2019

Можно было бы получить первое ненулевое число в 'P' и использовать его для удаления столбцов

df1[-seq_len(df1$P[df1$P > 0][1])]
#  VAR1 VAR2 P
#1   10   12 2
#2   12   13 1

Может быть упаковано в функцию

f1 <- function(dat, colNm) {
       dat[-seq_len(dat[[colNm]][dat[[colNm]] >0][1])]
 }

f1(df1, "P")
#  VAR1 VAR2 P
#1   10   12 2
#2   12   13 1
...