如何通过更新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