如何通过匹配相同的字符串来连接两个不等长的列

问题描述 投票:0回答:1

我有两个具有独特值的小标题,长度不等:

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,反之亦然。

如有任何进一步的建议,我将不胜感激。

r join tidyverse
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.