Сводная статистика числовых c переменных во фрейме данных в заданном формате c - PullRequest
1 голос
/ 19 июня 2020

У меня есть фрейм данных и там 3 числовых c переменных. Мне нужно вычислить некоторые параметры этих числовых c переменных, таких как среднее значение, медиана, стандартное отклонение, эксцесс. И затем мне нужно разместить это во фрейме данных. Итак, первый столбец этого фрейма данных будет содержать все имена переменных numeri c, а второй столбец будет содержать все средние значения, третий столбец будет содержать все медианные значения и так далее. Как этого добиться? Я знаком с пакетом dplyr. Так что есть предложения?

1 Ответ

2 голосов
/ 19 июня 2020

Вы можете использовать summarise с across:

library(dplyr)
library(tidyr)

mtcars %>%
  select(1:3) %>%
  summarise(across(where(is.numeric), list(mean = mean, std = sd, med = median)))

#  mpg_mean  mpg_std mpg_med cyl_mean  cyl_std cyl_med disp_mean disp_std disp_med
#1 20.09062 6.026948    19.2   6.1875 1.785922       6  230.7219 123.9387    196.3

В более старой версии dplyr вы можете использовать summarise_if:

mtcars %>%
  select(1:3) %>%
  summarise_if(is.numeric, list(mean = mean, std = sd, med = median))

Вы можете добавить pivot_longer к приведенному выше ответу, чтобы получить данные в необходимом формате.

mtcars %>%
  select(1:3) %>%
  summarise(across(where(is.numeric),list(mean=mean,std=sd,med = median))) %>%
  pivot_longer(cols = everything(), 
               names_to = c('col', '.value'), 
               names_sep = '_')


# A tibble: 3 x 4
#  col     mean    std   med
#  <chr>  <dbl>  <dbl> <dbl>
#1 mpg    20.1    6.03  19.2
#2 cyl     6.19   1.79   6  
#3 disp  231.   124.   196. 

Или вы можете сначала развернуть, а затем выполнить расчет:

mtcars %>%
  select(1:3) %>%
  pivot_longer(cols = everything()) %>%
  group_by(name) %>%
  summarise(mean = mean(value), std = sd(value), med = median(value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...