我对此数据框有疑问,请在此链接中添加:
https://dl.dropbox.com/u/83787253/Base.RData
我的问题是我想识别具有多个副本的行。我使用此代码来解决我的问题但它计算所有行,包括uniques的行。
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)))
它有效,但我不知道如何只获得具有多个重复项的行。感谢
答案 0 :(得分: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
(基于密钥),该data.table中的集合N=0
,然后它与一个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