我有一个数据框,首先我比较它们以创建一个布尔值列,然后我想通过在前两列中grep它们来知道哪一个是假的。
df:
200610-1 200610-10
AA AA TRUE
CC CC TRUE
AA AA TRUE
AA EE FALSE
AA AA TRUE
RR RR TRUE
AA AA TRUE
FF AA FALSE
NN NN TRUE
AA AA TRUE
BB RR FALSE
desired output:
4 AA EE
8 FF AA
11 BB RR
我通过
对它们进行了比较 table(df[,2] == df[,3])
但后来我不知道如何将布尔值grep到数据帧值中。谢谢。
答案 0 :(得分:5)
不是创建布尔列(我想在输出中我们不需要它),只需比较第一个和第二个比较来创建一个返回布尔值的表达式并使用它来对行进行子集化。
df[df[,1]!= df[,2],]
# 200610-1 200610-10
#4 AA EE
#8 FF AA
#11 BB RR
答案 1 :(得分:1)
或者使用布尔列:
df[which(df[,3]==F),]
4 AA EE FALSE
8 FF AA FALSE
11 BB RR FALSE
答案 2 :(得分:1)
假设列是字符,这是另一种方式:
df[-which(df[,1]==df[,2]),]
如果您想使用grep,请尝试
df[!apply(df, 1, function(x) grepl(x[1], x[2])),]
4 AA EE
8 FF AA
11 BB RR