4
我試圖找到一個函數來匹配一個公共列上不同長度的兩個數據幀,並創建一個不同的列,指定它是否找到是否匹配。 因此,例如, DF1是:在R中合併兩個數據幀並找到公用值和不匹配的值
Name Position location
francesca A 75
cristina B 36
而且DF2是:
location Country
75 UK
56 Austria
而且我想匹配的 「位置」 和輸出是這樣的:
Name Position Location Match
francesca A 75 1
cristina B 36 0
我嘗試過使用功能match
或使用:
subset(df1, location %in% df2)
但它不起作用。
請你幫我弄清楚如何做到這一點?
傑森B,非常感謝。通過這種方式,我可以獲得在兩個dfs中匹配的記錄列表(如果匹配> 0)以及僅在df1(match == 0)中存在的記錄列表。還有一個問題,你知道是否有一種簡單的方法來獲得df2中不在df1中的記錄列表?謝謝 – user971102
Hi @ user971102 - 很高興它爲你工作(如果答案解決了你的問題,請接受它,讓其他人知道)。要從df2獲取不在df1中的記錄,請嘗試:df2 [which(is.na(match(df2 $ location,df1 $ location))),]]或者,更直觀地說,df2 [-which(df2 $ location%在%df1 $位置),] –
對不起傑森B,只是最後一個澄清......正如你所說,如果這些值不是唯一的,這種方法將不起作用,我在開始時有一個額外的步驟,以確保只有一個「位置」記錄:df1_unique <-subset(df1,!duplicated(location)),用於df1和df2。但是,這不應該意味着「匹配」列應該只有0或1個值嗎?但我的'匹配'值不僅是= 1或0 ... – user971102