temp <- data.table(fir=c("A", "B", "B", "C", "A", "D"), sec=c(1,1,1,1,2,2))
fir sec
A 1
B 1
B 1
C 1
A 2
D 2
如果我想通过&#34; sec&#34;列,例如只计算出现的次数。我可以试试......
方法a)
temp[,.N, by=sec]
sec N
1: 1 4
2: 2 2
我们在&#34; sec&#34;。
获得了不同级别的行数方法b)
temp[,Num:=.N, by=sec]
相同的摘要,但保留所有列和相同的行数。
fir sec Num
A 1 4
B 1 4
B 1 4
C 1 4
A 2 2
D 2 2
但是...
如何获得类似方法a)的结果,但是指定新列的名称?我的意思是不需要在以后明确地更改名称
我已经尝试使用Num = .N而没有:=但它不起作用。
如何获得类似方法b)的结果,但是没有明确写出新列的名称而不修改原始数据表? (像ave()) 我的意思是运行这样的东西
temp[,.N, by=sec]
但是
fir sec N
A 1 4
B 1 4
B 1 4
C 1 4
A 2 2
D 2 2
答案 0 :(得分:2)
我们可以使用rep
temp[,.(Num = rep(.N, .N)), by=sec]
如果我们需要获取其他变量,则一个选项是on
temp[temp[, .(Num = .N), by=sec], on = .(sec)]