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

时间:2019-05-30 15:14:27

标签: r conditional-statements

这是我的示例:

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则为删除前两列,但没有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 个答案:

答案 0 :(得分:1)

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