我有兩張桌子。第一個表有 206 206 行,第二個表有 300 行。使用left_join這種方式后:
final <- left_join(first, second, by="CATEGORY")
最終表有 223 201 行。我不明白為什么添加了額外的行。最后我需要有 206 206 行,只添加了額外的列。可能是什么問題?我試過了inner_join,我仍然有同樣的問題。
uj5u.com熱心網友回復:
如果有多種匹配方式,連接總是會添加額外的行。在這里,c如果a為 1 ,則可以同時為 1 和 2。distinct在 id 列(此處:)上使用a以獲取一對多匹配之一:
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df1 <- tibble(a = c(1,2), b = 2)
df1
#> # A tibble: 2 x 2
#> a b
#> <dbl> <dbl>
#> 1 1 2
#> 2 2 2
df2 <- tibble(a = c(1,1,2), c = c(1,2,3))
df2
#> # A tibble: 3 x 2
#> a c
#> <dbl> <dbl>
#> 1 1 1
#> 2 1 2
#> 3 2 3
left_join(df1,df2)
#> Joining, by = "a"
#> # A tibble: 3 x 3
#> a b c
#> <dbl> <dbl> <dbl>
#> 1 1 2 1
#> 2 1 2 2
#> 3 2 2 3
left_join(df1,df2) %>% distinct(a, .keep_all = TRUE)
#> Joining, by = "a"
#> # A tibble: 2 x 3
#> a b c
#> <dbl> <dbl> <dbl>
#> 1 1 2 1
#> 2 2 2 3
由reprex 包(v2.0.1)于 2021 年 12 月 2 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/374310.html
上一篇:帶有冗余謂詞的LEFTJOIN比CROSSJOIN執行得更好嗎?
下一篇:Informix到HiveQL
