2017-01-25 11 views
0

私は、agrep関数を使用して、会社名に基づいて2つの異なるデータフレームをあいまい一致させようとしています。マッチングを改善するため、同じ国にいる企業とのみ一致させたいと考えています。カテゴリ別ファジーマッチング

testb$test <- "" 
for(i in 1:dim(testb)[1]) {x2 <- agrep(testb$name[i], testa$name, ignore.case=TRUE, value=TRUE, max.distance = Inf, useBytes = TRUE, fixed = TRUE) 
        x2 <- paste0(x2,"") 
        testb$test2[i] <- x2 
} 

私はすべての国のためのサブセットを作成して動作しますが、時間がかかり、各サブセットを、一致させるよりも、することができます:私は一致するには、以下の機能を使用し

df1:        df2: 
Company    ISO  Company    ISO 
Aalberts Industries NL   Aalberts    NL 
Allison    NL   Allison transmission NL 
Allison    UK   Allison transmission UK 

。 df1 $ ISO = df2 $ ISOの場合にのみ、Rに会社名が一致するようにする別の方法はありますか?ありがとう!

答えて

1

data.tableパッケージでインデックスを作成してみてください:https://www.r-bloggers.com/intro-to-the-data-table-package/

あなたの会社の列は、agrep()と一貫して正確に一致するにはあまりにも似ていないようです。たとえば、「Aalberts Industries」は、max.distanceを10より大きい値に設定した場合にのみ、「Aalberts」と一致します。同じ文字列距離では、「Algebra」と「Alleyway」の間の一致も報告されます。私はあなたの会社の列にある不必要な単語をマッチングする前に削除することをお勧めします。

申し訳ありませんが、私はこれをコメントにしますが、私は必要な評判はありません。多分誰かがこれを私のためのコメントに変換できますか?

関連する問題