我有我想要做一個完整的加盟使用dplyr兩個表,但我不希望它降大任列。根據文檔和我自己的經驗,它只保留左側的連接列。這是一個問題,因爲連接值已經消失,因此右側有一行記錄。是否有可能在dplyr中進行完全連接並保留連接中使用的所有列?
例如,假設我有兩個表A和B,
customerId | revenue customerId | state
-----------|--------- -----------|-------
1 | 2000 1 | CA
2 | 3000 3 | GA
4 | 4000 4 | NY
做這樣full_join(a, b, by="customerId")
東西會產生
customerId | revenue | state
-----------|---------|-------
1 | 2000 | CA
2 | 3000 | <NA>
<NA> | <NA> | GA
4 | 4000 | NY
所以沒有辦法判斷哪些客戶是第三排從。理想的輸出將是
customerId.a | customerId.b | revenue | state
-------------|--------------|---------|-------
1 | 1 | 2000 | CA
2 | <NA> | 3000 | <NA>
<NA> | 3 | <NA> | GA
4 | 4 | 4000 | NY
請注意,這只是一個玩具的例子。我實際上使用sparklyr,所以這一切都在Spark中運行。因此,合併在這裏對我來說不起作用。有沒有辦法做到我在dplyr中尋找的東西?
編輯: 正如有人指出,這實際上是工作在dplyr本身所需的本地。但是,我確實使用sparklyr(使用dplyr)來查看此問題。下面是代碼的看到:
library(sparklyr)
sc <- spark_connect("local[4]")
d1 <- data_frame(customerId = c("1","2","4"), revenue=c(2000,3000,4000))
d2 <- data_frame(customerId = c("1","3","4"), state=c("CA", "GA", "NY"))
d1_tbl <- copy_to(sc, d1)
d2_tbl <- copy_to(sc, d2)
full_join(d1_tbl, d2_tbl, by=c("customerId"))
這裏提交的問題:https://開頭github上。 COM/rstudio/sparklyr /問題/ 663。謝謝! – kevinykuo