描述
我有两个数据集,其中包含我需要合并的信息.我唯一常见的字段是不完全匹配的字符串和可能大不相同的数字字段
解释问题的唯一方法是向您显示数据.这是a.csv和b.csv.我想把B合并到A.
B中有三个字段,A中有四个字段.公司名称(仅文件A),基金名称,资产类别和资产.到目前为止,我的重点是尝试通过替换字符串的单词或部分来匹配基金名称以创建完全匹配,然后使用:
a <- read.table(file = "http://bertelsen.ca/R/a.csv",header=TRUE, sep=",", na.strings=F, strip.white=T, blank.lines.skip=F, stringsAsFactors=T)
b <- read.table(file = "http://bertelsen.ca/R/b.csv",header=TRUE, sep=",", na.strings=F, strip.white=T, blank.lines.skip=F, stringsAsFactors=T)
merge(a,b, by="Fund.Name")
Run Code Online (Sandbox Code Playgroud)
但是,这只会让我达到约30%的匹配率.其余的我必须手工完成.
资产是一个数值领域,在这两个领域并不总是正确的,如果基金资产较少,资产可能会有很大差异.Asset Class是一个字符串字段,在两个文件中"通常"相同,但是存在差异.
在文件B中增加了不同系列的资金.例如:
AGF加拿大价值
AGF加拿大价值-D
在这些情况下,我必须选择未经过服务的那个,或者选择名为"A"," - A"或"Advisor"的那个作为匹配.
题
你会说最好的方法是什么?这个练习是我每月必须做的事情,手动匹配它是非常耗时的.代码示例将是有用的.
IDEAS
我认为可行的一种方法是根据字符串中每个单词的第一个大写字母规范化字符串.但是我还没弄清楚如何使用R来解决这个问题.
我考虑的另一种方法是根据资产,基金名称,资产类别和公司的组合创建匹配指数.但同样,我不知道如何用R做到这一点.或者,就此而言,如果它甚至可能.
非常感谢代码,评论,想法和方向的例子!