我有信息的兩個數據集,我需要合併。我唯一的共同領域是不完美匹配的字符串和可能大不相同的數字字段
解釋問題的唯一方法是向您顯示數據。這裏是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")
然而,這只是給我帶來約30%的匹配。其餘的我必須手工完成。
資產是一個數字字段,它並不總是正確的,並且如果基金資產較低,可能會大幅波動。資產類是兩個文件中「通常」相同的字符串字段,但是存在差異。
添加到併發症是一系列不同的基金,在文件B.例如:
AGF加拿大價值
AGF加拿大價值d
在這些情況下,我必須選擇一個未被選中的選項,或選擇一個名爲「A」,「-A」或「Advisor」的選項作爲比賽。
問題
你會說什麼是最好的方法?這個練習是我每月必須做的事情,手動匹配它是非常耗時的。代碼的例子將是有用的。
IDEAS
一種方法,我覺得可以合作,開發基於字符串中每個單詞的第一個大寫字母被標準化的字符串。但我一直未能弄清楚如何使用R來解決這個問題。
我考慮的另一種方法是根據資產,基金名稱,資產類別和公司的組合來創建匹配指數。但是,我不知道如何用R來做到這一點。或者,就此而言,如果甚至可能的話。
代碼,評論,想法和方向的例子非常感謝!
如果我們談論字符串匹配,那麼'?agrep'(在基礎包中)。 – Marek 2010-02-09 20:40:38
如果您可以將數據作爲帖子的一部分,那麼我們可以在發佈幾年後使用該示例。謝謝。 – Jochem 2012-12-09 21:12:07
確實在幾年後,數據不存在 – 2016-05-12 10:55:44