>这是我的例子:
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