問題タブ [stringdist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1775 参照

r - R stringdist、stringdistmatrix を使用したアドレスの文字列一致

2 つの大きなデータセットがあります。1 つは約 50 万件のレコードで、もう 1 つは約 70K です。これらのデータセットにはアドレスがあります。小さいデータセットのアドレスのいずれかが大きいデータセットに存在するかどうかを照合したい。ご想像のとおり、アドレスはさまざまな方法でさまざまなケースで記述できるため、一致するはずのときに一致せず、一致してはならないときに一致するのを見るのは非常に面倒です。私はいくつかの調査を行い、使用できるパッケージ stringdist を見つけました。しかし、私は立ち往生しており、その機能を最大限に活用していないと感じており、これに関するいくつかの提案が役立ちます.

以下は、状況を説明するために作成したコードと一緒にサンプルのダミー データです。

出力を見ると、df1 の address_match の下に一致が表示されます。メイン データに同じコードを適用すると、コードは過去 30 時間からまだ実行されています。私はdata.tableに変換しましたが。どうすればこれを高速化できるかわかりません。

私はさらに読んでいて、stringdistマトリックスに出くわしました。これはより役立つようで、アドレスごとにスペースを分割し、各アドレス リスト内の各単語の存在をチェックし、最大一致に応じて一致の概要を作成できます。しかし、私はループがあまり得意ではありません。各単語の小さなファイルから各アドレスをループし、大きなファイルの個々のアドレスをチェックインして、一致のマトリックスを作成するにはどうすればよいですか? どんな助けでも!!

0 投票する
1 に答える
122 参照

r - 参照テーブルの各値を使用して data.table の各要素のレーベンシュタイン比を計算し、最大比とマージする

3列のdata.table dtがあります:

  • ID
  • 文字列としての名前
  • 数値としてのしきい値

サンプルは次のとおりです。

2 つの列を持つ 2 番目のテーブル dt.ref があります。

  • ID
  • 文字列としての名前

サンプルは次のとおりです。

dtの各rnameについて、次のようにdt.refの各cnameを使用してレーベンシュタイン比を計算したいと思います。

次に、 dtの各rnamecnameでmax(Lr) を検索し、次の data.table を出力として取得します。

基本的に、dt を取り、最大レーベンシュタイン比と対応する cid の 2 つの列を追加します。n2 のように 1 行に 1 つずつ同数がすべて追加されることがわかっています。

私は使用しますdata.tableが、ソリューションはdplyrまたは他のパッケージを使用できます。