如何通过更新r中匹配ID的值来连接两个数据帧

如何通过更新r中匹配ID的值来连接两个数据帧,r,dplyr,merge,left-join,R,Dplyr,Merge,Left Join,我有一个数据集dm,它包含1000行和15列,看起来像: dm <- "ID NAME col1 col2 col3 col4 col5 123 a1 M 20 2.0 56 3 234 b1 M 25 2.2 54 3 345 c1 F 23 2.3 52 2 456 d1

我有一个数据集
dm
,它包含1000行和15列,看起来像:

dm <- "ID  NAME    col1    col2    col3    col4    col5
123  a1      M       20      2.0    56      3   
234  b1      M       25      2.2    54      3   
345  c1      F       23      2.3    52      2   
456  d1      M       24      2.5    50      2   
567  e1      F       26      2.6    48      2   
678  f1      F       28      2.8    46      1   
789  h1      M       29      2.9    44      1   
900  k1      M       27      3.1    42      0   
123  a1      M       27      3.2    40      0   
234  b1      M       27      3.4    38     -1   
345  c1      F       25      3.5    36     -1"
dm <- read.table(text = dm, header = TRUE)

当我在执行变异联接时使用
dplyr
右联接
df3时,
x
的行和列的顺序会尽可能地保留,而组则取自
x
。在您的代码中,
x=df2
应该是
y=

使用
x=df1
y=df2
对数据帧重新排序产生:

数据:

df3 <- df1 %>% 
right_join(df2, by = c("ID", "NAME")) #df1 is piped (%>%) into right_join as x, making y = df2.
#>    ID NAME col1.x col2.x col3.x col4 col5 col1.y col2.y col3.y
#> 1 123   a1      M     20    2.0   56    3      0      1      2
#> 2 234   b1      M     25    2.2   54    3      1      0      1
#> 3 345   c1      F     23    2.3   52    2      2      2      0
#> 4 456   d1      M     24    2.5   50    2      0      1      1
#> 5 123   a1      M     27    3.2   40    0      0      1      2
#> 6 234   b1      M     27    3.4   38   -1      1      0      1
#> 7 345   c1      F     25    3.5   36   -1      2      2      0
库(dplyr)

这很奇怪。看起来它确实在以相反的顺序使用数据集。尝试使用首先列出的dm进行左连接。您可以尝试
df3
    ID   NAME  col1     col2    col3    col4    col5     col10  col12   col13   …
    123   a1    M        20      2.0    56        3        0       1    2   
    234   b1    M        25      2.2    54        3        1       0    1   
    345   c1    F        23      2.3    52        2        2       2    0   
    456   d1    M        24      2.5    50        2        0       1    1   
    123   a1    M        20      2.0    56        3        0       1    2   
    234   b1    M        25      2.2    54        3        1       0    1   
    345   c1    F        23      2.3    52        2        2       2    0
    456   d1    M        24      2.5    50        2        0       1    1   
df3 <- df1 %>% 
right_join(df2, by = c("ID", "NAME")) #df1 is piped (%>%) into right_join as x, making y = df2.
#>    ID NAME col1.x col2.x col3.x col4 col5 col1.y col2.y col3.y
#> 1 123   a1      M     20    2.0   56    3      0      1      2
#> 2 234   b1      M     25    2.2   54    3      1      0      1
#> 3 345   c1      F     23    2.3   52    2      2      2      0
#> 4 456   d1      M     24    2.5   50    2      0      1      1
#> 5 123   a1      M     27    3.2   40    0      0      1      2
#> 6 234   b1      M     27    3.4   38   -1      1      0      1
#> 7 345   c1      F     25    3.5   36   -1      2      2      0