1. ホーム
  2. r

重複している行のインデックスを探す [duplicate]

2023-09-01 01:50:31

質問

Rで重複している行の検索を行う関数です。重複を削除したい場合は、以下のように記述するだけです。 df[!duplicated(df),] と書くだけで、データフレームから重複が削除されます。

しかし、重複したデータのインデックスを見つけるにはどうしたらよいでしょうか。もし duplicated が TRUE を返した場合、それはデータフレーム内でその行が 2 回目に出現したことを意味し、そのインデックスは簡単に取得することができます。この行の最初のインデックスを得るにはどうしたらよいでしょうか?または、言い換えれば、複製された行が同一であるインデックスを取得する方法はありますか?

私はdata.frame上でループを作ることができましたが、私はこの質問についてよりエレガントな答えがあると思います。

どのように解決するのですか?

以下に例を示します。

df <- data.frame(a = c(1,2,3,4,1,5,6,4,2,1))

duplicated(df) | duplicated(df, fromLast = TRUE)
#[1]  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE

どのように機能するのか?

機能 duplicated(df) は、元データの重複要素を判定します。その fromLast = TRUE は、"重複は裏側から考えるべきであることを示します"。結果として得られる2つの論理ベクトルは | で結合されます。 TRUE は重複した値を示しているからです。