У меня есть набор данных с числовой переменной c и групповой переменной, и я хотел бы вычислить групповое среднее. Некоторые группы пусты, то есть есть некоторые уровни факторов, которые не отображаются в данных. При вычислении сгруппированных средних я бы хотел, чтобы эти пустые группы были указаны рядом с непустыми группами. Этого легко добиться, используя базу R:
# Create an example of a data frame where variable1 is numeric and variable2 is a
# factor with three levels, two of which appear in the data:
df <- data.frame(variable1 = c(1,2,3,4), variable2 = factor(c("A","B","A","B")))
levels(df$variable2) <- c(levels(df$variable2), "C")
# Base R
tapply(df$variable1, df$variable2, mean)
, которая отображает вывод
A B C
2 3 NA
, что я и ищу.
Однако для различных причины, по которым я должен сделать это, используя вместо этого dplyr
или data.table
. Проблема в том, что оба пропускают пустые уровни в сводках:
library(dplyr)
df %>% group_by(variable2) %>%
summarise(var1Mean = mean(variable1))
приводит к
# A tibble: 2 x 2
variable2 var1Mean
<fct> <dbl>
1 A 2
2 B 3
И
library(data.table)
df <- as.data.table(df)
df[, mean(variable1), variable2]
приводит к
variable2 V1
1: A 2
2: B 3
Есть ли способ сделать так, чтобы любой из этих пакетов включал пустые группы в сводку?