【发布时间】:2017-01-04 19:50:24
【问题描述】:
我有多个采购数据库,我需要在这些数据库上运行我为识别某些产品而构建的“关键字”列表,如果有匹配项,我想将这些产品标记为外科手术类别。
这是一个例子。
采购数据库(其实我有超过200万行要翻):
d<-data.frame(prod_desc=c("BANDELETTE TVTO-OBTRYX HALO", "BANDELETTE MINI ARC PRECISES", "BANDELETTE D'ANALYSE POUR GLYCEMIE", "DIACH. BANDELETTE STER 19MM X 72MM","SLING MALE SYSTEM","DIACHILON","AIGUILLE","GANT","LABEL","CRAYON"),label=1:10)
关键字和返回值列表(实际列表要长得多):
kw<-data.frame(kw=c("bandelette","tvt","bande transvaginale","sling system","argus"),category="ss_bandelette")
我想找到包含我的关键字字符串kw 的产品prod_desc,如果有匹配项,我想在d 数据框中添加一列,该列将返回与关联的category kw 在 kw 数据框中。
现在我可以使用以下代码达到预期的效果:
d$match <- ifelse(d$cat <- grepl(paste(kw$kw,collapse="|"), d$name,ignore.case = TRUE) == "TRUE","SS_Bandelette","-")
但是这段代码效率不高,因为我有大约 350 个关键字,它们映射到大约 30 个不同的类别。如果触发了我的关键字之一,我可以使用什么代码在 d 数据框中自动返回类别?
非常感谢您的帮助。
菲尔
【问题讨论】:
-
@DarshanBaral 我想这个问题是不同的。甚至我之前也是这么想的。我已经发布了答案
标签: r string match return-value product