2017-04-19 85 views
0

我使用從dplyr加入兩個數據幀。這裏是一個MWE:使用dplyr時避免使用NA填充:: left_join

library(dplyr) 

dfOne <- data.frame(1:10, 
        8*(1:10), 
        c(2,4,6,8,10,12,14,16,18,20)) 
colnames(dfOne)<-c("one", "two", "three") 


dfTwo <- data.frame(1:6, 
        8*(1:6), 
        c(2,4,6,8,10,12)) 
colnames(dfTwo)<-c("one", "two", "three") 


left_join(dfOne[c("one", "two")], dfTwo[c("two", "three")], by="two") 

這讓下面的輸出(如預期)

one two three 
1 1 8  2 
2 2 16  4 
3 3 24  6 
4 4 32  8 
5 5 40 10 
6 6 48 12 
7 7 56 NA 
8 8 64 NA 
9 9 72 NA 
10 10 80 NA 

three則以用NA在哪裏dfTwo$two不存在dfTwo$one所有行。但是,是否可以使用left_join這樣的方式避免NA-值,它們是空的(NULL)?

+0

你想'inner_join'而不是'left_join'嗎? –

回答

1

我不確定我是否能正確理解你的問題,但如果我能理解R中的NA與SQL中的Null相同可能會有幫助。如果您希望NA顯示爲「」,只需在左連接中命名您的數據框(例如「lj_df」)並替換所有的NA。你可以用「0」或「Null」或其他你喜歡的東西替換爲「」。

lj_df <- left_join(dfOne[c("one", "two")], dfTwo[c("two", "three")], by="two")  
lj_df[is.na(lj_df)] <- ""