我有两个具有独特值的小标题,长度不等:
df1 <- structure(list(col1 = c("A", "T", "C", "D", "X", "F")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -6L))
df2 <- structure(list(col2 = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -10L))
> df1
# A tibble: 6 × 1
col1
<chr>
1 A
2 T
3 C
4 D
5 X
6 F
> df2
# A tibble: 9 × 1
col2
<chr>
1 A
2 B
3 C
4 D
5 F
6 G
7 H
8 I
9 J
我想得到:
> df3
# A tibble: 11 × 2
col1 col2
<chr> <chr>
1 A A
2 NA B
3 T NA
4 C C
5 D D
6 X NA
7 F F
8 NA G
9 NA H
10 NA I
11 NA J
df1 的 col1 中的每个相同字符串和 df2 中的 col2 中的每个相同字符串都应该并排位于同一行中。例如,如果 col1 和 col2 中的字符串相同,则它们应该位于同一行(例如字符串 A)。 如果一个字符串存在于 col1 但不存在于 col2 中,那么它在 col2 中应该是 NA,反之亦然。
如有任何进一步的建议,我将不胜感激。
library(dplyr)
full_join(df1, df2, by = join_by(col1 == col2), keep = TRUE)
#> # A tibble: 12 × 2
#> col1 col2
#> <chr> <chr>
#> 1 A A
#> 2 T <NA>
#> 3 C C
#> 4 D D
#> 5 X <NA>
#> 6 F F
#> 7 <NA> B
#> 8 <NA> E
#> 9 <NA> G
#> 10 <NA> H
#> 11 <NA> I
#> 12 <NA> J