問題タブ [agrep]
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.
r - R agrep() 関数の動作
関数の結果を理解するのに苦労していagrep()
ます。関数の説明で何が欠けているのかわかりません。
agrep()
はあいまい一致用で、スペルミスを修正するために使用したいと思います。挿入/削除/置換は最大 2 回までにしてください。
例として、私のコードを次に示します。
ここで、私が期待するのは、最大 2つの"73SAINTGERVAIS"
挿入/削除/置換に変換できないため、この要求に対する回答がないことです。ただし、結果は次のとおりです。"73SAINTGERMAINLACHAMBOTTE"
"73CHAMBERY"
挿入/削除/置換の概念が文字ベースではないということですか (つまり、文字列"MAINLACHALBOTTE"
は 1 つの挿入と見なされます)。
r - R の異なる長さのデータ フレームとの名前の一致
多数の変数を持つ 2 つのデータフレームがあります。主な関心事は、変数 df1.organization_name および df2.legal.name です。ここでは、完全修飾された SQL 風の名前を使用しています。
df1 のサイズは 15 x 2700 で、df2 のサイズは 10x40,000 です。基本的に、「共通」または「一致」列は名前フィールドです。
私はこの記事を見直しました R の変数のファジーマッチングによるマージは非常に役に立ちましたが、スクリプトを dfs で動作させるためにスクリプトをラングルする方法を実際には理解できません。
エラーが発生し続けます - Error in which(organization_name[i] == LEGAL.NAME) : object 'LEGAL.NAME' not found.
希望するマッチングと結果
私がやろうとしているのは、df1.organization_name のすべてを df2.legal_name のすべてと比較し、それらが非常に近い場合 (>=85% など) に比較することです。そして、上記のスクリプトのように、一致した顧客名と一致した比較名を取得し、後で分析するためにそれらを data.frame に入れます。
したがって、私の顧客名の 1 つが「Johns Hopkins Auto Repair」で、公開リストの名前の 1 つが「John Hopkins Microphone Repair」である場合、それは適切な一致であり、顧客リストに何らかのインジケータを追加したいと考えています。 (別の列に)「部分一致」と公開リストの名前が表示されます。
テキスト ラングリングの dfs の例:
df1.organization_name (これらは偽の名前です。顧客名を投稿することはできません)
df2.LEGAL.NAME (これらはオープン ソース ファイルの実際の名前です)
r - 1文字の許容範囲で文字列を一致させる方法は?
正しい場所名のベクトルに対して曖昧さを解消しようとしている場所のベクトルがあります。この例では、明確な場所を 2 つだけ使用しています。
ヘルプページにはmax.distance
、
試合で許容される最大距離。整数として、またはパターン長に最大変換コストを掛けた分数として表されます。
レーベンシュタイン距離の数学的な意味についてはよくわかりません。私の理解では、距離が小さいほど、明確化された文字列のベクトルとの不一致に対する許容度が厳しくなります。
それで、2つ取得するように調整しますFALSE
か?基本的には、TRUE
次のように1文字の違いがある場合にのみ使用したいと思います:
r - R の agrep 関数がテキスト マッチングで機能しない
agrep
の関数を使用して文字列を一致させようとしていますR
。なぜ値を返さないのかわかりません。指定されたテキストの完全一致を提供するソリューションを探しています。与えられた例では、それが表示されるはずです"ms sharda stone crusher prop rupa"
あらゆる種類の助けをいただければ幸いです。前もって感謝します。
r - R の agrep が最適な一致を見つけられないのはなぜですか?
agrep コマンドを使用して、R で文字列の一致を試みています。ただし、最適なものを見つけるために最適化するのではなく、適切な一致を見つけたときに停止することを懸念しています。それがどのように機能するかについての私の理解が間違っている可能性はありますが。以下の私の例は、大雑把ではありますが、問題を再現しています。
うまくいけばわかるように、agrep は体重と身長を一致させますが、体重の方が適切であり、また存在します。
どうしてこれなの?
r - R でのあいまい一致に agrep() を使用する代替アプローチ
約 100 万レコードの管理データの大きなファイルがあります。このデータセットでは、個々の人を複数回表すことができます。記録の約半分には、記録を個人にマッピングする識別コードがあります。そうでない半分については、名前をあいまい一致させて、同一人物に属する可能性のあるレコードにフラグを付ける必要があります。
識別コードを含む記録を見て、同じ個人の名前の記録で発生した違いのリストを作成しました。
- ジョン・スノウ vs ジョン・ターガリエン・スノウなど、ミドルネームを含める
- 2 番目の姓を含める 例: Jon Snow vs Jon Targaryen-Snow
- ニックネーム / 名の短縮形 例: Jonathon Snow vs Jon Snow
- ジョン・スノウ vs スノー・ジョンなどの名前の反転
- スペルミス/タイプミス/バリアント: 例: Samual/Samuel、Monica/Monika、Rafael/Raphael
私が求めている試合の種類を考えると、Rで簡単に実装できるagrep()/levenshteinの距離を使用するよりも良いアプローチはありますか?
編集: R の agrep() は、この問題に対してあまりうまく機能しません。名前が異なる方法で記録されることを考慮して、多数の挿入と置換を許可する必要があるため、多くの誤った一致がスローされます。 .