• R语言
  • sapply指令如何copy两列?

最近在做一个企业名称匹配的工作,因为从网路捞到的资料中企业名称有缺陷,然后和正确的资料名称模糊匹配后,找到正确的名称及序号。资料格式如下:

捞到的资料(reg):

name
永泰
西宁
京能
华微

正确资料(corp):

code name
600157 永泰能源
600360 华微电子
600791 京能置业
600117 西宁特钢


因为捞到的资料有七万多笔,正确资料中的公司总数约140万,我用stringdist使用下列指令:
reg$check <- corp$name[sapply(reg$name, function(x) {
  which.min(stringdist::stringdist(x, corp$name, method = 'lcs', useBytes = TRUE))
})]

得到的结果如下,下面是百分之百对到,但实际上会有些错误产生,这里暂且不论:

name check
永泰 永泰能源
西宁 西宁特钢
京能 京能置业
华微 华微电子

但我需要的结果如下:

name check code
永泰 永泰能源 600157
华微 华微电子 600360
京能 京能置业 600791
西宁 西宁特钢 600117

因为我不想再用sapply再跑一次,实在非常耗费时间和没必要,搞不好会有不必要的错误产生,上面stringdist指令的程式码要怎么修改才能一次将check及code两列放入?
没发现有stringdist指令 :plain:
令name_check为结果,则
plyr::join(name_check,corp,by="check")
即可得到
亦可用merge
抱歉,stringdist要安装package,详情请见:http://cran.r-project.org/web/packages/stringdist/index.html
试试
reg$check <- corp[sapply(reg$name, function(x) {
  which.min(stringdist::stringdist(x, corp$name, method = 'lcs', useBytes = TRUE))
})]