如何在不添加额外行 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 创建
我有两个 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 创建