如何解决通过列表
我需要根据 2 列列表进行模式匹配。当我使用精确匹配来匹配配送中心附近的各个位置时,这很有效。
lfp <- "D:/Libraries/Documents/Survey/Location Cleanse List.csv"
ltbl <- readtext(lfp) # 2 vectors (Location_Pattern,Cleansed_Hub)
cfp <- 'url to source database'
# Customer_Location is a concatenation of 'Customer_City' and 'Customer_State' in a prior procedure
ctbl <- 'database extract # 3 columns (doc_id,Customer_ID,Customer_Location)
# This adds a new column with location of hub to ctbl which will later be joined to another matrix for additional analysis based on regional hubs.
ctbl$Customer_Hub <- ltbl$Cleansed_Hub[match(ctbl$Customer_Location,lt$Location_Pattern)]
但是,我发现了很多“脏”位置,因此我需要向 Customer_Location 添加正则表达式通配符,而不是完全匹配,以补偿客户在输入“Customer_City”时输入的拼写错误和缩写,但是由于客户的下拉选择,“Customer_State”将始终是好的。
我已经对 cbtbl 进行了额外的处理,将所有 Customer_Location 更改为 lowercae,甚至将向量重新分类为 Expression,但似乎没有任何效果...
ltbl$Location_Pattern <- tolower(ltbl$Location_Pattern)
ctbl$Customer_Location <- tolower(ctbl$Customer_Location)
class(ltbl$Location_Pattern) <- "Expression"
这是 ltbl 的示例:
Location_Pattern,Cleansed_Hub
"^dal*tx|dfw*tx","DFW,TX"
"^f*w*tx",TX"
"^hurst*tx|^eul*s*tx|^be*ord*tx|^h?e?b*tx",TX"
"^kil*en*tx","Temple,TX"
"^nol*lle*tx",TX"
"^west*lia*tx|^W*phalia*TX",TX"
这将匹配像
这样的位置“德克萨斯州达拉斯”或“德克萨斯州达拉斯”或“德克萨斯州达拉斯市”
“德克萨斯州沃思堡”、“德克萨斯州沃思堡”、“德克萨斯州沃思堡”
"Hurst,TX" 或 "Eules,TX" 或 Euless,TX" 或 Bedford,TX 或 "H-E-B,TX" 或 "HEB,TX"
“德克萨斯州基伦”或“德克萨斯州基伦”或“德克萨斯州基伦”或“德克萨斯州基伦”
“德克萨斯州诺兰维尔”或“德克萨斯州诺兰维尔”或“德克萨斯州诺兰维尔”或德克萨斯州诺兰维尔
“Westfalia,TX”或“Westfalia,TX”或“W-phalia,TX”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。