Как создать кросс-таблицу с помощью dplyr (с примерами)


Вы можете использовать следующий базовый синтаксис для создания кросс-таблицы с использованием функций из пакетов dplyr и tidyr в R:

df %>%
 group_by(var1, v ar2) %>%
 tally () %>%
 spread(var1, n)

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

Пример 1. Создание базовой кросс-таблицы

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

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
 position=c('G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'),
 points=c(7, 7, 8, 11, 13, 15, 19, 13))

#view data frame
df

 team position points
1 A G 7
2 A G 7
3 A F 8
4 A C 11
5 B G 13
6 B F 15
7 B F 19
8 B C 13

Мы можем использовать следующий синтаксис для создания кросс-таблицы для переменных «команда» и «позиция»:

library(dplyr)
library(tidyr)

#produce crosstab 
df %>%
 group_by(team, position) %>%
 tally () %>%
 spread(team, n)

# A tibble: 3 x 3
 position A B
1 C 1 1
2 F 1 2
3 G 2 1

Вот как интерпретировать значения в кросс-таблице:

  • Есть 1 игрок, который занимает позицию «C» и принадлежит к команде «A».
  • Есть 1 игрок, который занимает позицию «C» и принадлежит к команде «B».
  • Есть 1 игрок, который занимает позицию «F» и принадлежит к команде «A».
  • Есть 2 игрока, которые занимают позицию «F» и принадлежат к команде «B».
  • Есть 2 игрока, которые занимают позицию «G» и принадлежат к команде «А».
  • Есть 1 игрок, который занимает позицию «G» и принадлежит к команде «B».

Обратите внимание, что мы можем переключать строки и столбцы кросс-таблицы, переключая переменную, используемую в функции spread() :

library(dplyr)
library(tidyr)

#produce crosstab with 'position' along columns
df %>%
 group_by(team, position) %>%
 **tally () %>%
 **spread(position, n)

# A tibble: 2 x 4
# Groups: team [2]
 team C F G 
1 A 1 1 2
2 B 1 2 1

Связанный: Как использовать функцию распространения в тайдыре

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

В следующих руководствах объясняется, как выполнять другие распространенные функции в dplyr:

Как рассчитать относительные частоты с помощью dplyr
Как выбрать столбцы по индексу с помощью dplyr
Как удалить строки с помощью dplyr

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.