这是我的示例:
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
答案 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