1. ホーム
  2. r

[解決済み] Rで重複する値を探す【重複】について

2022-03-02 08:38:45

質問

21638のユニーク*な行を持つテーブルがあります。

vocabulary <- read.table("http://socserv.socsci.mcmaster.ca/jfox/Books/Applied-Regression-2E/datasets/Vocabulary.txt", header=T)

このテーブルには5つのカラムがあり、最初のカラムには回答者のID番号が格納されています。回答者が 2 回表示されるかどうか、またはすべての回答者が一意であるかどうかを確認したいのです。

ユニークIDを数えるには

length(unique(vocabulary$id))

そして、重複があるかどうかをチェックするために、次のようにします。

length(unique(vocabulary$id)) == nrow(vocabulary)

を返します。 TRUE 重複がなければ(ないのですが)。

私の質問です。

重複している値や行番号を直接返す方法はありますか?

もう少し詳しく説明します。

を使用すると、解釈上の問題があります。 duplicated() なぜなら、これは厳密な意味での重複を返すだけで、オリジナルは含まれないからです。例えば sum(duplicated(vocabulary$id)) または dim(vocabulary[duplicated(vocabulary$id),])[1] は、重複している行の数として "5"を返すかもしれません。問題は、重複している行の数だけでは、その行が何行目なのかがわからないということです。5"5"は5つの行がそれぞれ1つずつ重複しているという意味でしょうか、それとも1つの行に5つ重複しているという意味でしょうか?また、重複している行のIDや行番号が分からないので、quot;original"を見つける手段もありません。


* このアンケートに重複するIDがないことは承知していますが、この質問に対して他の場所で回答されたものを使用すると、例えば duplicated(vocabulary$id) または table(vocabulary$id) を実行すると、画面に干し草の山が出力され、その中から希少な重複する針を見つけるのは至難の業です。

解決するには?

を使用することができます。 table は、すなわち

n_occur <- data.frame(table(vocabulary$id))

のリストを含むデータフレームが得られます。 id とその発生回数が表示されます。

n_occur[n_occur$Freq > 1,]

は、どの id が複数回発生しました。

vocabulary[vocabulary$id %in% n_occur$Var1[n_occur$Freq > 1],]

は、複数の出現回数を持つレコードを返します。