使用dplyr :: left_join时,请避免使用NA填充

时间:2017-04-19 18:36:15

标签: r

我正在使用left_join中的dplyr加入两个数据帧。这是一个MWE:

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

threeNA不存在的所有行中,dfTwo$two列填充dfTwo$one。但是,是否可以使用left_join以避免NA - 值并且它们为空(NULL)?

1 个答案:

答案 0 :(得分: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)] <- ""