У меня есть данные, по которым я хочу получить кучу сводной статистики для нескольких столбцов с помощью подхода tidyverse. Однако, используя функцию tidyverse summarize
, он создаст каждый столбец statisti c как новый столбец, тогда как я бы предпочел видеть имена столбцов в виде строк, а каждый statisti c как новый столбец. Итак, мой вопрос:
Есть ли более элегантный (и я знаю, что «элегантный» - расплывчатый термин) способ добиться этого, чем добавление к функции summarize
pivot_longer
и pivot_wider
?
Я использую последние версии пакета tidyverse для разработчиков, то есть dplyr 0.8.99.9003 и tidyr 1.1.0. Так что ничего страшного, если какое-либо решение требует новых функций из этих пакетов, которых еще нет в CRAN.
library(tidyverse)
dat <- as.data.frame(matrix(1:100, ncol = 5))
dat %>%
summarize(across(everything(), list(mean = mean,
sum = sum))) %>%
pivot_longer(cols = everything(),
names_sep = "_",
names_to = c("variable", "statistic")) %>%
pivot_wider(names_from = "statistic")
Ожидаемый результат:
# A tibble: 5 x 3
variable mean sum
<chr> <dbl> <dbl>
1 V1 10.5 210
2 V2 30.5 610
3 V3 50.5 1010
4 V4 70.5 1410
5 V5 90.5 1810
Примечание: я не указываю имя любого из столбцов, поэтому, если есть хороший способ получить структуру таблицы с разными / generi c именами, это тоже будет хорошо.