在“by”中使用factor列,不要删除空因子

时间:2013-05-14 11:39:09

标签: r data.table

假设我有一个data.table:

x <- data.table(x=runif(3), group=factor(c('a','b','a'), levels=c('a','b','c')))

我想知道每个x {/ 1}}中有多少行:

group

问题:是否有某种方法可以强制上述x[, .N, by="group"] # group N # 1: a 2 # 2: b 1 考虑因素by="group"的所有级别?

请注意,由于表格中没有group'c'的任何行,因此我没有得到c的行。

期望的输出:

group

1 个答案:

答案 0 :(得分:14)

如果您愿意通过在i中枚举它们而不是通过设置by="group"来运行因子级别,那么这将为您提供所希望的结果。

setkey(x, "group")
x[levels(group), .N, by=.EACHI]
#    group N
# 1:     a 2
# 2:     b 1
# 3:     c 0