R比较列并grep错误值

时间:2016-10-03 09:43:45

标签: r dataframe grep boolean

我有一个数据框,首先我比较它们以创建一个布尔值列,然后我想通过在前两列中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到数据帧值中。谢谢。

3 个答案:

答案 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