【发布时间】:2021-07-30 13:31:46
【问题描述】:
我有两个 data.frame 一个包含部分名称,另一个包含完整名称,如下所示
partial <- data.frame( "partial.name" = c("Apple", "Apple", "WWF",
"wizz air", "WeMove.eu", "ILU")
full <- data.frame("full.name" = c("Apple Inc", "wizzair", "We Move Europe",
"World Wide Fundation (WWF)", "(ILU)", "Ilusion")
在理想的世界里,我很想有一个这样的表(我真正的部分 df 有 12 794 行)
print(partial)
partial full
Apple Apple Inc
Apple Apple Inc
WWF World Wide Fundation (WWF)
wizz air wizzair
WeMove.eu We Move Europe
... 12 794 total rows
对于没有答案的每一行,我想成为NA
我尝试了很多东西,fuzzyjoin 和 regex,regex_left_join 甚至还有包 sqldf。我有一些结果,但我知道如果regex_left_join 明白我正在寻找我在stringr 中知道的单词会更好,boundary( type = c("word")) 存在但我不知道如何实现它。
目前,我只准备了部分 df,以去除非字母数字信息并将其变为小写。
partial$regex <- str_squish((str_replace_all(partial$partial.name, regex("\\W+"), " ")))
partial$regex <- tolower(partial$regex)
如何根据最大共同词数将partial$partial.name 与full$full.name 匹配?
【问题讨论】:
标签: r stringr sqldf stringdist fuzzyjoin