如何在 R 中排除不同条件下的列



>这是我的例子:

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

一种选择是获取"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

最新更新