Як транспонувати кадр даних за допомогою dplyr


Ви можете використовувати наступний базовий синтаксис для транспонування кадру даних за допомогою пакета dplyr у R:

 library (dplyr)
library (tidyr)

df %>%
    pivot_wider(names_from = column1, values_from = column2)

Аргумент Names_from визначає значення для імен стовпців у транспонованому фреймі даних, а аргумент Values_from визначає значення клітинок, які слід використовувати у транспонованому фреймі даних.

Зауважте, що оператор каналу ( %>% ) походить із пакета dplyr , а функція pivot_wider() — із пакету Tidyr .

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: транспонування фрейму даних за допомогою dplyr

Припустимо, що ми маємо наступний кадр даних у R, який містить інформацію про різні баскетбольні команди:

 #create data frame
df <- data. frame (team=c('Mavs', 'Nets', 'Kings', 'Lakers'),
                 dots=c(99, 104, 119, 113))

#view data frame
df

    team points
1 Mavs 99
2 Nets 104
3 Kings 119
4 Lakers 113

Тепер припустімо, що ми хочемо транспонувати фрейм даних так, щоб імена команд використовувалися як імена стовпців, а значення точок використовувалися як значення клітинок у фреймі даних.

Для цього ми можемо використати такий синтаксис:

 library (dplyr)
library (tidyr)

#transpose data frame
df %>%
    pivot_wider(names_from = team, values_from = points)

# A tibble: 1 x 4
   Mavs Nets Kings Lakers
      
1 99 104 119 113

Фрейм даних транспоновано таким чином, що імена команд використовуються як стовпці, а значення балів використовуються як значення клітинок у фреймі даних.

Зверніть увагу, що отриманий кадр даних тепер містить 1 рядок і 4 стовпці.

Пов’язане: знайомство з функцією pivot_wider() у R

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання за допомогою dplyr:

Як фільтрувати рядки, що містять певний рядок, за допомогою dplyr
Як обчислити відносні частоти за допомогою dplyr
Як вибрати перший рядок групою за допомогою dplyr

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *