程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何通过检测可能的多个子字符串来匹配查找表,如在 R 中将“US|USA|United States”与“abc,United States,xzy”匹配?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何通过检测可能的多个子字符串来匹配查找表,如在 R 中将“US|USA|United States”与“abc,United States,xzy”匹配??

开发过程中遇到如何通过检测可能的多个子字符串来匹配查找表,如在 R 中将“US|USA|United States”与“abc,United States,xzy”匹配?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何通过检测可能的多个子字符串来匹配查找表,如在 R 中将“US|USA|United States”与“abc,United States,xzy”匹配?的解决方法建议,希望对你解决如何通过检测可能的多个子字符串来匹配查找表,如在 R 中将“US|USA|United States”与“abc,United States,xzy”匹配?有所启发或帮助;

我对问题标题中的术语不是很确定,但我有一个包含非结构化机构地址的数据框,我想使用具有多个可能匹配项的查找表来提取他们的国家/地区。

地址可能如下所示:

viper

请注意,国家/地区不一定出现在字符串的末尾。

管道将匹配并提取可能是国家/地区名称的任何内容(从大约 20 个国家/地区的列表中),并为每个国家/地区返回一个干净的国家/地区名称。

address
xxx US
xxx USA yy
xxx United States yy
xxx UK
xxx United Kingdom yy

我正在虑将查找表创建为具有两列的 data.frame:

(df <- tribble(
    ~address,~clean_country,"xxx US","United States","xxx,USA yy","xxx United States,yy","xxx UK","United Kingdom","xxx United Kingdom yy","xxx zz yy",NA_character_,))

然后使用正则表达式检查是否可以在 (lookup <- tribble( ~country,~matches,"US|USA|United States","UK|United Kingdom" )) 列,然后将 @H_83_7@matches 列附加为 df$address 中的 country

当然,我对遵循其他策略的解决方案感兴趣。因为数据集比较大,所以(内存)效率更高。

解决方法

使用查找表方法,您可以使用 addressstr_extract 中提取国家/地区名称,并将其替换为查找表中的国家/地区名称。

library(Stringr)
str_replace_all(str_extract(df$address,str_c(lookup$matches,collapse = '|')),setNames(lookup$country,lookup$matches))

#[1] "United States"  "United States"  "United States" 
#[4] "United Kingdom" "United Kingdom" NA   

大佬总结

以上是大佬教程为你收集整理的如何通过检测可能的多个子字符串来匹配查找表,如在 R 中将“US|USA|United States”与“abc,United States,xzy”匹配?全部内容,希望文章能够帮你解决如何通过检测可能的多个子字符串来匹配查找表,如在 R 中将“US|USA|United States”与“abc,United States,xzy”匹配?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:如在