2016-10-03 101 views
1

我有一個數據幀和第一餘比較它們來創建布爾值的列,然後我想知道哪一個是通過在第一兩列的grep他們假。ř比較列和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

這看起來並不像的R數據框。列名是非法的。 –

+0

@ 42以及它在理論上是可能通過改變'colnames'或通過創建'DF [somestring]'變量有什麼作爲列名。當然不是你應該這樣做! – Choubi

+0

但它們不會以這種方式顯示,並且會有三個col名稱。 –

回答

5

不是創建布爾列(我猜的輸出,我們並不需要它)的,只是比較的第一和第二比較創建返回布爾值的表達式,並用它來子集行。

df[df[,1]!= df[,2],] 
# 200610-1 200610-10 
#4  AA  EE 
#8  FF  AA 
#11  BB  RR 
1

或者用你的布爾列:

df[which(df[,3]==F),] 

4 AA EE FALSE 
8 FF AA FALSE 
11 BB RR FALSE 
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