7
來港,我有兩個相同的數據幀dplyr INNER_JOIN與字符列
a <- c(1,2,3)
b <- c(3,2,1)
c <- c('a','b',NA)
df1 <- data.frame(a=a, b=b, c=c, stringsAsFactors=FALSE)
df2 <- data.frame(a=a, b=b, c=c, stringsAsFactors=FALSE)
我想用dplyr::inner_join
來
「從X那裏有匹配的y值返回所有行,和所有列從x和y「dplyr documentation
(這是一切,因爲它們是平等的),但它似乎並沒有與NA
列c
(類型chr
)。這種標準行爲是否不加入NA
?
例如
library(dplyr)
> inner_join(df1, df2)
Joining by: c("a", "b", "c")
a b c
1 1 3 a
2 2 2 b
不加入的NA
。不過,我想這回一樣merge
> merge(df1, df2)
a b c
1 1 3 a
2 2 2 b
3 3 1 <NA>
難道我誤解在這種情況下如何inner_join
工程,是描述這種性能如何?
進一步詳細
inner_join
上的數字列
a <- c(1,2,3)
b <- c(3,2,NA)
c <- c('a','b','c')
df1 <- data.frame(a=a, b=b, c=c, stringsAsFactors=FALSE)
df2 <- data.frame(a=a, b=b, c=c, stringsAsFactors=FALSE)
> inner_join(df1, df2)
Joining by: c("a", "b", "c")
a b c
1 1 3 a
2 2 2 b
3 3 NA c
編輯
由於@thelatemail指出,inner_join
也可以作爲merge
當NA
是在比賽NA
因子列
df1 <- data.frame(a=a, b=b, c=c, stringsAsFactors=T)
df2 <- data.frame(a=a, b=b, c=c, stringsAsFactors=T)
inner_join(df1, df2)
Joining by: c("a", "b", "c")
a b c
1 1 3 a
2 2 2 b
3 3 3 <NA>
編輯2
感謝@shadow指出這個是一個已知的問題here和here
尼斯的問題,以及提出的例子。有趣的是,'inner_join'在使用存儲爲'factor's的字符數據時也可以正常工作,例如:改變你的第一個例子'df1 $ c < - factor(df1 $ c); df2 $ c < - 因子(df2 $ c); inner_join(df1,df2)' – thelatemail
這是一個已知問題。見[這裏](https://github.com/hadley/dplyr/issues/1022)或[這裏](https://github.com/hadley/dplyr/issues/892) – shadow
謝謝@shadow,我會留意一些問題。 – tospig