这个问题分为两部分。我想加入/合并两个数据帧成一个。它们都只有一列,但行数不同。有些观察结果是吻合的;
df1 <- c("John", "Tommy", "Linda", "Cole")
df2 <- c("Tom", "John", "Bruce")
as.data.frame(df1)
as.data.frame(df2)
将它们连接在一起后,我需要将匹配的观察值放在同一行。也就是说,John(df1)将与John(df2)在同一行,Tommy(df1)和Tom(df2)也在同一行。这可能涉及模糊匹配,因为需要匹配不同的名称(Tom/Tommy)。
如果在df1中有一个在df2中不存在的观测值(比如Linda),我希望在df2的那一行中有一个NA。Bruce则相反。
所需输出:
<表类>df1 df2 tbody><<tr>约翰 约翰 汤米汤姆 琳达NA 科尔NA NA 布鲁斯 表类>
使用fuzzyjoin
:
df1 <- data.frame(df1 = c("John", "Tommy", "Linda", "Cole"))
df2 <- data.frame(df2 = c("Tom", "John", "Bruce"))
fuzzyjoin::stringdist_full_join(df1, df2, by = c(df1 = "df2"))
# df1 df2
# 1 John John
# 2 Tommy Tom
# 3 Linda <NA>
# 4 Cole <NA>
# 5 <NA> Bruce