我试图找到data.table
中唯一行的数量,对于“A”中的每个唯一元素。这是我做的:
DT <- data.table(A = rep(1:3, each=4), B = rep(1:4, each=3), C = rep(1:2, 6), key = "A")
unique(DT,by=names(DT)) #Gives me each unique row in DT
# A B C
# 1: 1 1 1
# 2: 1 1 2
# 3: 1 2 2
# 4: 2 2 1
# 5: 2 2 2
# 6: 2 3 1
# 7: 2 3 2
# 8: 3 3 1
# 9: 3 4 2
#10: 3 4 1
nrow(unique(DT,by=names(DT))) #Gives me the number of unique rows in DT
# [1] 10
DT[,nrow(unique(DT,by=names(DT))),by=A] #Doesn't give me the number of unique rows for each unique DT$A.
# A V1
# 1: 1 10
# 2: 2 10
# 3: 3 10
谁能看到我在这里做错了什么?
答案 0 :(得分:3)
我认为你想使用.SD(每个组的子表)
DT[,nrow(unique(.SD)),by=A]
# A V1
#1: 1 3
#2: 2 4
#3: 3 3
答案 1 :(得分:2)
因为nrow(unique(DT,by=names(DT))
是10
,您基本上是在说DT[,10,by=A]