-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=0data.table 中的集合,然后它与已计算行数的 data.table 连接,该数据表是包含大于 1 的计数的子集,然后在其中分配这个新计数唯一的 data.table,用正确的数字覆盖 N=0。

第二种可能更简单的方法(使用问题中的更新数据,其中包括一个类列)

 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 回答