Załóżmy, że mam data.table:Użyj kolumnę czynnikiem „za” i nie upuścić pustych czynniki
x <- data.table(x=runif(3), group=factor(c('a','b','a'), levels=c('a','b','c')))
chcę wiedzieć, ile wierszy w x
istnieć dla każdego group
:
x[, .N, by="group"]
# group N
# 1: a 2
# 2: b 1
Pytanie: czy istnieje sposób wymuszenia powyższego by="group"
, aby uwzględnić wszystkie poziomy czynnika group
?
Zauważ, że skoro nie mam żadnych wierszy z group
"c" w tabeli, nie otrzymam wiersza dla c.
Pożądany wyjściowa:
x[, .N, by="group", ???] # somehow use all levels in `group`
# group N
# 1: a 2
# 2: b 1
# 3: c 0
Dlaczego nie dodać brakujące poziomy potem coś takiego 'seryjnej (Y, data.table (grupa = poziomach (x [grupa])), przez = "grupy", wszystko = true), a następnie' zamień 'NA's na 0? – Roland
Nie znam ogólnego rozwiązania, ale dla samego '.N' możesz powrócić na' table': 'x [, table (group)]' (jak zapewne już wiesz). – Frank