首页 > 解决方案 > 如何在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

标签: rconditional-statements

解决方案


一个选项是获取“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

推荐阅读