-1

このリンクにあるこのデータ フレームに問題があります。

https://dl.dropbox.com/u/83787253/Base.RData

私の問題は、複数の重複がある行を特定したいということです。このコードを使用して問題を解決しましたが、一意の行を含むすべての行をカウントします。

z1=data.frame(ddply(Base, .(TIPO_MOVIMIENTO,FECHA.DE.PROCESO.DEL.SISTEMA.DEL.MOVIMIENTO,FECHA.REAL.DEL.MOVIMIENTO,VALOR_TOTAL_MOVIMIENTO,NOMBRE.DEL.MOVIMIENTO.Y.NTAD.NTAC,ID,Categoria),summarise,X=length(ID))) 

動作しますが、複数の重複がある行のみを取得する方法がわかりません。ありがとう

4

1 に答える 1

1

data.table答え_

DT <- data.table(d, key = 'ID')
DTu <- unique(DT)[,N:=0L][DT[, .N,by = list(ID, Amount)][N >1], N := i.N]
DTu
##     ID Amount N
## 1: 001     10 2
## 2: 002     20 0
## 3: 003     50 2
## 4: 004     30 0

これにより、data.table(キーに基づいて)一意のセットが作成されN=0、そのdata.table内にセットが作成され、行数をカウントしたdata.tableと結合され、1を超えるカウントを含むようにサブセット化されます。次に、この新しいカウントを一意の data.table、N=0 を正しい番号で上書きします。

2番目の、おそらくより単純なアプローチ(クラス列を含む、質問の更新されたデータを使用)

 DT[, .N  ,by = list(ID, Class)][,list(dups = sum(N[N>1])) ,by= ID]
    ID dups
1: 001    2
2: 002    0
3: 003    2
4: 004    0
于 2013-03-14T22:40:28.350 に答える