重複行の削除:残ってしまう理由と前処理
表計算やチャットからコピーした名簿は、同じ行が何度も出てきます。重複削除は最初の 1 行を残して他を消し、行の中身には触れません。
本当に必要になる場面
複数の名簿を統合するときが典型です。3 つの出力それぞれにメールや電話の列があり、つなげると重複だらけになります。重複を除いて初めて実人数が分かります。キーワード、タグ、URL、商品コードも同じです。
出力データの整理も同じです。同じイベントが何度も記録されたログや、同じ発言が転送されたチャットは、重複を除くと独立した項目だけが残ります。重複の量を先に見ておくと、データの品質判断にも使えます。
- 複数の名簿を統合した後の重複整理
- キーワード・タグ・URL の重複削除
- 出力データの重複レコード整理
期待どおりの結果にするには
比較は行全体を 1 文字ずつ行い、大文字小文字を区別します。行頭や行末の空白 1 つ、全角スペース、句読点の違いで別の行になります。「同じに見えるのに残る」場合は、ほとんどがこの見えない違いです。
残るのは最初に出てきた行なので、元の順序が結果に影響します。先に並べ替えると、残るのは並べ替え後の先頭です。前後の空白を除く、重複を削除する、必要なら最後に並べ替える、の順がおすすめです。空行も同じ規則で、複数あっても 1 行になります。
- 前後の空白を除いてから削除する
- 最初に出てきた行が残る
- 空行は 1 行だけ残る
代替手段と注意点
大文字小文字を無視して重複を除きたいなら、先にすべて小文字へ変換します。ただし元の表記は失われます。Acme と Acme Inc.、市外局番の有無、表記違いの住所など、似ているが異なる項目は統合されません。あいまい一致やスクリプトが必要です。
データが多い場合や表にある場合は、Excel の重複の削除、データベースの DISTINCT、コマンドの sort と uniq の組み合わせが適しています。削除した行は跡形も残らないため、元データの控えを必ず取ってください。
よくある質問
同じに見える行が削除されないのはなぜですか?
1 文字ずつ比較しているためです。行頭や行末の空白、全角スペース、句読点の違いで別の行と判定されます。前後の空白を除いてから再度実行してください。
重複した行はどれが残りますか?
現在の順序で最初に出てきた行が残り、後から出てきた同じ行が削除されます。先に並べ替えた場合は、並べ替え後の先頭が残ります。
大文字小文字を無視して重複を削除できますか?
本ツールは区別するため、React と react は 2 行として扱います。無視したい場合は先にすべて小文字へ変換してください。元の表記は失われるので控えを残します。
関連ツール:重複行の削除