2017-07-31 146 views
-1

我有兩個不同的數據框,df1和df2。我需要從df1中刪除df2內的觀察值。我正在考慮通過每一行和每一列進行循環,並檢查值是否在df2範圍內,如果是,請將其刪除。我想知道是否有更快的方法來做到這一點。這是我到目前爲止從數據框中刪除觀察R

`for(i in 1:nrow(df1)){ 
for(j in 1:ncol(df1)){ 
    if(df[i,j] %in% df2){ 
    df[i,j] <- 'NA' 
    } 
} 
}` 

我不想刪除整行,只有在df2中的值,並將單元格移到左邊。 然後刪除所有的NA值。非常感謝你。

+0

請加重複性的數據,期望的結果,並澄清你的意思是「刪除所有的NA值」。元素不能在data.frames內刪除。 –

+0

@Frank這似乎不像以前的鏈接複製...我有一個答案,我認爲將滿足@OP,但不能發佈歸因於'重複'標籤 – CPak

+0

@ChiPak你可以遊說OP發佈一個完整具有所需輸出的示例。沒有這個,我認爲即使有更好的答案,這個問答也不會有用。 – Frank

回答

-1

您有任何ID或密鑰可以檢查嗎?

你應該能夠在dplyr包使用anti_join,但是,檢查整個行從DF1到DF2的整行:

?anti_join 
"return all rows from x where there are not matching values in y, 
keeping just columns from x." 
+0

是的,我認爲反連接是最乾淨的方式。 「檢查整個行從df1到整個df2行」 - 'by ='參數允許限制被比較的列,對不對?無論如何,我只是低調,因爲這應該更充實。此外,如果你有澄清的問題,他們應該是OP的評論,而不是「答案」的一部分。 – Frank