Как использовать функцию распространения в R (с примерами)


Функцию spread() из пакета tidyr можно использовать для «распределения» пары «ключ-значение» по нескольким столбцам.

Эта функция использует следующий базовый синтаксис:

распространение(данные, ключевое значение)

куда:

  • data : Имя фрейма данных
  • key : столбец, значения которого станут именами переменных
  • value : Столбец, в котором значения будут заполняться новыми переменными, созданными из ключа

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

Пример 1. Распространение значений по двум столбцам

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

#create data frame
df <- data.frame(player= rep (c('A', 'B'), each= 4 ),
 year= rep (c(1, 1, 2, 2), times= 2 ),
 stat= rep (c('points', 'assists'), times= 4 ),
 amount=c(14, 6, 18, 7, 22, 9, 38, 4))

#view data frame
df

 player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4

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

library(tidyr)

#spread stat column across multiple columns
spread(df, key=stat, value=amount)

 player year assists points
1 A 1 6 14
2 A 2 7 18
3 B 1 9 22
4 B 2 4 38

Пример 2. Распространение значений более чем по двум столбцам

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

#create data frame
df2 <- data.frame(player= rep (c('A'), times= 8 ),
 year= rep (c(1, 2), each= 4 ),
 stat= rep (c('points', 'assists', 'steals', 'blocks'), times= 2 ),
 amount=c(14, 6, 2, 1, 29, 9, 3, 4))

#view data frame
df2

 player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 1 steals 2
4 A 1 blocks 1
5 A 2 points 29
6 A 2 assists 9
7 A 2 steals 3
8 A 2 blocks 4

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

library(tidyr)

#spread stat column across multiple columns
spread(df2, key=stat, value=amount)

 player year assists blocks points steals
1 A 1 6 1 14 2
2 A 2 9 4 29 3

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

Целью пакета tidyr является создание «аккуратных» данных, обладающих следующими характеристиками:

  • Каждый столбец является переменной.
  • Каждая строка — это наблюдение.
  • Каждая ячейка представляет собой одно значение.

Пакет tidyr использует четыре основные функции для создания аккуратных данных:

1. Функция распространения() .

2. Функция сбора() .

3. Функция разделения() .

  1. Функция объединения() .

Если вы освоите эти четыре функции, вы сможете создавать «аккуратные» данные из любого фрейма данных.