【发布时间】:2019-05-02 20:22:33
【问题描述】:
我正在尝试基于非常相似的语言对两个数据帧进行 dplyr 左连接(这不准确)。
DF1:
title | records
Bob's show, part 1 | 42
Time for dinner | 77
Horsecrap | 121
DF2:
showname | counts
Bob's show part 1 | 772
Dinner time | 89
No way Jose | 123
我执行此操作以使用 stringdist 包/库将字符串距离作为向量获取:
titlematch <- amatch(df1$title,df2$showname)
向量看起来像……嗯,一个整数向量:
titlematch
1
2
NA
通常,如果我有完全匹配,我会这样做:
blended <- left_join(df1, df2, by = c("title" = "showname"))
如何使用向量作为记录选择器进行左连接,以便最终结果为:
title | records | showname | counts
Bob's show, part 1 | 42 | Bob's show part 1 | 772
Time for dinner | 77 | Dinner time | 89
排除第三个不匹配项,因为向量中没有可能的匹配项 (NA)。
【问题讨论】:
-
您可以使用
tidyr::crossing()制作笛卡尔积,然后对其进行过滤 - 如果数据集很大,则成本很高 -
你看过
fuzzyjoin吗?
标签: r dplyr stringdist