如何在不添加额外行 R 的情况下使用 left_join?

How to use left_join without adding additional rows R?

我有两个 table。第一个 table 有 206 206 行,第二个有 300 行。这样使用 left_join 后:

final <- left_join(first, second, by="CATEGORY")

最后的 table 有 223 201 行。我不明白为什么要添加额外的行。我需要在末尾有 206 206 行,只添加额外的列。可能是什么问题?我试过inner_join,我仍然有同样的问题。

如果有多种匹配方式,加入总是会添加额外的行。 这里,如果 a 为 1,则 c 可以同时为 1 和 2。 在 id 列上使用 distinct(此处: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 package (v2.0.1)

于 2021-12-02 创建