Подтвердить что ты не робот

Используйте столбцы факторов в "по" и не оставляйте пустые факторы

Предположим, что у меня есть data.table:

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

Я хочу знать, сколько строк в x существует для каждого group:

x[, .N, by="group"]
#    group N
# 1:     a 2
# 2:     b 1

Вопрос: есть ли способ заставить приведенный выше by="group" рассмотреть все уровни фактора group?

Обратите внимание, что, поскольку у меня нет строк с group 'c' в таблице, я не получаю строку для c.

Требуемый вывод:

x[, .N, by="group", ???] # somehow use all levels in `group`
#    group N
# 1:     a 2
# 2:     b 1
# 3:     c 0
4b9b3361

Ответ 1

Если вы готовы пройти через уровни факторов, перечислив их в i (вместо установки by="group"), это даст вам надежду на результаты.

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