Вы можете использовать следующий базовый синтаксис для создания кросс-таблицы с использованием функций из пакетов 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