描述
我有两个数据集,其中包含需要合并的信息。我拥有的唯一常见字段是不完全匹配的字符串和可能大不相同的数字字段
解释问题的唯一方法是向您展示数据。这是a.csv和b.csv。我正在尝试将 B 合并到 A。
B 中有 3 个字段,A 中有 4 个字段。公司名称(仅限文件 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")
然而,这只会让我达到大约 30% 的匹配率。其余的我必须手动完成。
资产是一个数值字段,在这两个字段中并不总是正确的,并且如果基金的资产较低,则可能会有很大差异。Asset Class 是一个字符串字段,在两个文件中“通常”相同,但是存在差异。
更复杂的是文件 B 中的不同系列基金。例如:
AGF 加拿大价值
AGF 加拿大价值-D
在这些情况下,我必须选择没有序列化的那个,或者选择称为“A”、“-A”或“Advisor”的那个作为匹配项。
问题
你会说什么是最好的方法?这个练习是我必须每月做的事情,手动匹配它们非常耗时。代码示例将很有帮助。
想法
我认为可能有效的一种方法是根据字符串中每个单词的第一个大写字母对字符串进行规范化。但我一直无法弄清楚如何使用 R 来解决这个问题。
我考虑的另一种方法是根据资产、基金名称、资产类别和公司的组合创建匹配索引。但同样,我不确定如何用 R 来做到这一点。或者,就此而言,如果它甚至可能的话。
非常感谢代码、注释、想法和方向的示例!