Рассматривая набор данных, такой как классический mtcars
, я хочу знать количество наблюдений (= строк) по различным уровням факторов, принимая их как отдельно, так и вместе.
Например, следующий код сгенерирует столбец N с количеством наблюдений на уровень цил и передач, но не с количеством наблюдений цил и передач отдельно.
mtcars %>% dplyr::group_by(cyl, gear) %>% dplyr::summarise(N = n())
Я знаю, что это отдельный номер наблюдений для цил и передача может быть получена аналогичным образом, создавая отдельные кадры данных и объединяя все вместе. Следующее будет генерировать ожидаемый результат:
df <- mtcars %>% dplyr::group_by(cyl, gear) %>% dplyr::summarise(N = n())
df_gear <- mtcars %>% dplyr::group_by(gear) %>% dplyr::summarise(Ngear = n())
df_cyl <- mtcars %>% dplyr::group_by(cyl) %>% dplyr::summarise(Ncyl = n())
df %>% dplyr::left_join(df_cyl) %>% dplyr::left_join(df_gear)
Но мне интересно, есть ли более чистый способ генерации этого набора данных, надеюсь, без необходимости создавать промежуточные наборы данных.