表1:
id1 fname lname by bm bd
362 FRANK MUELLER 1967 9 27
55 MARTIN SCHWARZ 1967 2 17
116 HERBERT ZIMMERMANN 1961 11 6
326 HANS SCHMITT 1945 8 14
96 UWE NA 2000 7 5
table2
id2
55
96
116
116
96
如果表中的数字id1等于表2中的数字id2,则将与表1(fname,lname,by,bm,bd)匹配的列及其内容与table2相匹配。NOTE:将与table1匹配的列添加到table2时,应以id2的顺序(55,96,116,226,326,...)
当我这样做时,我使用了这个功能:合并(tabl2,table1,by =“ id2”,sort = FALSE)然后我得到了这个:
id2 fname lname by bm bd
55 MARTIN SCHWARZ 1967 2 17
96 UWE NA 2000 7 5
96 UWE NA 2000 7 5
116 HERBERT ZIMMERMANN 1961 11 6
116 HERBERT ZIMMERMANN 1961 11 6
. .
. .
我以从较小的数字到较大的数字的顺序得到它,但我想要的是在不更改顺序的情况下将其作为table2中id2的列来获得。
您可以尝试(使用base R
):
df3 <- merge(df2, df1, by.x="id2", by.y="id1")
df3[match(df2$id2, df3$id2),]
为您提供
id2 fname lname by bm bd
1 55 MARTIN SCHWARZ 1967 2 17
2 96 UWE <NA> 2000 7 5
4 116 HERBERT ZIMMERMANN 1961 11 6
4.1 116 HERBERT ZIMMERMANN 1961 11 6
2.1 96 UWE <NA> 2000 7 5
使用dplyr
:
left_join(df2, df1, by=c("id2" = "id1"))
产量
# A tibble: 5 x 6
id2 fname lname by bm bd
<dbl> <chr> <chr> <dbl> <dbl> <dbl>
1 55 MARTIN SCHWARZ 1967 2 17
2 96 UWE NA 2000 7 5
3 116 HERBERT ZIMMERMANN 1961 11 6
4 116 HERBERT ZIMMERMANN 1961 11 6
5 96 UWE NA 2000 7 5