Самый простой способ создания сводных таблиц в R


Самый простой способ создать сводные таблицы в R — использовать функции описать() и описатьBy() из библиотеки psych .

library (psych)

#create summary table
describe(df)

#create summary table, grouped by a specific variable
describeBy(df, group=df$var_name)

В следующих примерах показано, как использовать эти функции на практике.

Пример 1: создание базовой сводной таблицы

Предположим, у нас есть следующий фрейм данных в R:

#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C', 'C', 'C'),
 points=c(15, 22, 29, 41, 30, 11, 19),
 rebounds=c(7, 8, 6, 6, 7, 9, 13),
 steals=c(1, 1, 2, 3, 5, 7, 5))

#view data frame
df

 team points rebounds steals
1 A 15 7 1
2 A 22 8 1
3 B 29 6 2
4 B 41 6 3
5 C 30 7 5
6 C 11 9 7
7 C 19 13 5

Мы можем использовать функцию description() для создания сводной таблицы для каждой переменной во фрейме данных:

library (psych) 

#create summary table
describe(df)

 vars n mean sd median trimmed mad min max range skew kurtosis
team\* 1 7 2.14 0.90 2 2.14 1.48 1 3 2 -0.22 -1.90
points 2 7 23.86 10.24 22 23.86 10.38 11 41 30 0.33 -1.41
rebounds 3 7 8.00 2.45 7 8.00 1.48 6 13 7 1.05 -0.38
steals 4 7 3.43 2.30 3 3.43 2.97 1 7 6 0.25 -1.73
 se
team\* 0.34
points 3.87
rebounds 0.93
steals 0.87

Вот как интерпретировать каждое значение в выводе:

  • vars : номер столбца
  • n : Количество действительных случаев
  • среднее : среднее значение
  • median : среднее значение
  • trimmed : усеченное среднее (по умолчанию обрезается 10% наблюдений с каждого конца)
  • mad : Среднее абсолютное отклонение (от медианы)
  • мин : минимальное значение
  • макс : максимальное значение
  • диапазон : диапазон значений (макс. – мин.)
  • skew : асимметрия
  • эксцесс : эксцесс
  • se : стандартная ошибка

Важно отметить, что любая переменная со звездочкой (*) рядом с ней является категориальной или логической переменной, которая была преобразована в числовую переменную со значениями, которые представляют числовой порядок значений.

В нашем примере переменная team была преобразована в числовую переменную, поэтому сводную статистику для нее не следует интерпретировать буквально.

Также обратите внимание, что вы можете использовать аргумент fast=TRUE только для расчета наиболее распространенных сводных статистических данных:

#create smaller summary table
describe(df, fast= TRUE )

 vars n mean sd min max range se
team 1 7 NaN NA Inf -Inf -Inf NA
points 2 7 23.86 10.24 11 41 30 3.87
rebounds 3 7 8.00 2.45 6 13 7 0.93
steals 4 7 3.43 2.30 1 7 6 0.87

Мы также можем вычислить сводную статистику только для определенных переменных во фрейме данных:

#create summary table for just 'points' and 'rebounds' columns
describe(df[ , c('points', 'rebounds')], fast= TRUE )

 vars n mean sd min max range se
points 1 7 23.86 10.24 11 41 30 3.87
rebounds 2 7 8.00 2.45 6 13 7 0.93

Пример 2. Создание сводной таблицы, сгруппированной по определенной переменной

В следующем коде показано, как использовать функцию descriptionBy() для создания сводной таблицы для фрейма данных, сгруппированного по переменной team:

#create summary table, grouped by 'team' variable
describeBy(df, group=df$team, fast= TRUE )

 Descriptive statistics by group 
group: A
 vars n mean sd min max range se
team 1 2 NaN NA Inf -Inf -Inf NA
points 2 2 18.5 4.95 15 22 7 3.5
rebounds 3 2 7.5 0.71 7 8 1 0.5
steals 4 2 1.0 0.00 1 1 0 0.0
------------------------------------------------------------ 
group: B
 vars n mean sd min max range se
team 1 2 NaN NA Inf -Inf -Inf NA
points 2 2 35.0 8.49 29 41 12 6.0
rebounds 3 2 6.0 0.00 6 6 0 0.0
steals 4 2 2.5 0.71 2 3 1 0.5
------------------------------------------------------------ 
group: C
 vars n mean sd min max range se
team 1 3 NaN NA Inf -Inf -Inf NA
points 2 3 20.00 9.54 11 30 19 5.51
rebounds 3 3 9.67 3.06 7 13 6 1.76
steals 4 3 5.67 1.15 5 7 2 0.67

Выходные данные показывают сводную статистику для каждой из трех команд во фрейме данных.

Дополнительные ресурсы

Как рассчитать сводку из пяти чисел в R
Как рассчитать среднее значение по группе в R
Как рассчитать сумму по группе в R
Как рассчитать дисперсию R
Как создать ковариационную матрицу в R