【发布时间】:2011-01-14 23:26:12
【问题描述】:
描述
我有两个数据集,其中包含需要合并的信息。我拥有的唯一常见字段是不完全匹配的字符串和可能大不相同的数字字段
解释问题的唯一方法是向您展示数据。这是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 来执行此操作。或者,就此而言,是否可能。
非常感谢代码、cmets、想法和方向的示例!
【问题讨论】:
-
如果我们谈论字符串匹配,那么
?agrep(在基本包中)。 -
如果您可以将数据作为帖子的一部分,这样我们就可以在发布几年后使用该示例。谢谢。
-
确实是几年后数据不存在了
-
6 年前。我会查找数据,如果找到,请更新问题。虽然,我认为答案说明了解决方案。
标签: r fuzzy-search