2017-03-13 54 views
0

我試圖用inner_join合併兩個data.frames。我面臨的問題是合併結果只包含其中一個data.frames中的變量。爲什麼結果在`inner_join`之後包含不完整的變量?

我期望看到兩個數據框以不匹配的觀測值被丟棄並且這兩個變量仍然包含的方式合併。本例中的兩個數據幀分別命名爲cpdsgtd

我敢肯定,我有兩個唯一標識符(在我的情況,state & year)這兩個變量名是在這兩個數據幀中的相同。雖然結果的確降低了所有無與倫比的觀察結果;但是,它只包含其中一個數據框中的變量。

這裏是我的代碼:

library(dplyr) 
terdemo <- inner_join(cpds,gtd) 

然後[R響應以下消息,包括警告之一。

Joining, by = c("country", "year") 

Warning message: 
In inner_join_impl(x, y, by$x, by$y, suffix$x, suffix$y) : 
joining character vector and factor, coercing into character vector 

任何人都可以解釋爲什麼這個警告信息被觸發?

注意:我使用RStudio版本1.0.136和mac OS Sierra版本10.12.3。相關包是dplyr

+0

這兩個數據幀的名稱是什麼? –

+0

@TimBiegeleisen,這兩個數據框是:全球恐怖主義數據集和比較政治數據集。 –

回答

1

你或許應該始終明確地加入指定的加入by參數,即

terdemo <- inner_join(cpds, gtd, by=c("state" = "state", "year" = "year")) 

但是,這不應該有任何與當前的觀察。這是inner_join()的行爲,即對於兩個數據幀中的每對連接列進行連接,其中只有一個會出現在輸出中。如果您感覺列被丟棄,最可能的解釋是一個數據框中的一個或兩個連接列已從結果數據框中省略。

+0

非常感謝你@Tim。我發現,當我首先將兩個唯一標識符的類強制爲「character」,然後通過inner_join合併它們時,警告消息消失。但是,結果仍然只包含出現在輸出中的其中一個數據框中的變量。那麼,對於「結果數據框中省略了一個數據框中的一個或兩個連接列」,你是什麼意思?我可否強制** R **不要忽略任何我將要合併的數據框中的列?謝謝你的時間。 –

+0

更新顯示兩個數據框的列的問題。我不確定你所看到的是不可預料的。 –

0

我找到了我遇到的問題的答案。命令inner_join完全沒有問題,我無法找到某些變量的原因是合併後有太多(> 75)變量,所以當我使用View()時,某些變量無法顯示。您可以使用name()summary()來檢查合併後的所有變量。希望這個幫助。

相關問題