最初に出現したインデックスを保持しながら、データ フレーム内の重複行を数えて削除する効率的な方法を探していました。たとえば、データ フレームがある場合:
df<-data.frame(x=c(9.3,5.1,0.6,0.6,8.5,1.3,1.3,10.8),y=c(2.4,7.1,4.2,4.2,3.2,8.1,8.1,5.9))
ddply(df,names(df),nrow)
私にくれます
x y V1
1 0.6 4.2 2
2 1.3 8.1 2
3 5.1 7.1 1
4 8.5 3.2 1
5 9.3 2.4 1
6 10.8 5.9 1
しかし、複製された行の元のインデックスを (行名と共に) 保持したいと考えています。お気に入り:
x y V1
1 9.3 2.4 1
2 5.1 7.1 1
3 0.6 4.2 2
5 8.5 3.2 1
6 1.3 8.1 2
8 10.8 5.9 1
「重複」は元の行名 (ここでは {1 2 3 5 6 8}) を返しますが、出現回数はカウントしません。自分で関数を書いてみましたが、どれもビッグデータを処理するのに十分効率的ではありません。私のデータ フレームには、最大数百万行を含めることができます (ただし、列は通常 5 ~ 10 です)。