Функції R melt() і cast() – зміна форми даних у R

Функції R melt() і cast() – зміна форми даних у R

Вступ

Дані часто надходять у різноманітних формах, що може ускладнити їх аналіз та візуалізацію в R. Функції melt() та cast() забезпечують потужний спосіб перетворення даних з одного формату до іншого, що робить їх зручними для різних типів аналізу. У цій статті ми дослідимо функції melt() та cast(), їх синтаксис, параметри та застосування в R.

Функція melt()

Функція melt() перетворює дані з широкого формату у довгий. У широкому форматі кожна змінна має свій стовпець, а спостереження розташовані рядками. Довгий формат характеризується тим, що кожна змінна-спостереження упорядкована в окремому рядку з додатковими стовпцями для змінної та значення.

Синтаксис melt()


melt(data, id.vars, measure.vars, variable.name, value.name, ...)

де:

* data – датафрейм, що підлягає перетворенню.
* id.vars – вектор стовпців, що містять ідентифікатори спостережень. Ці стовпці будуть збережені як окремі рядки у довгому форматі.
* measure.vars – вектор стовпців, що містять дані, які буде перетворено у довгий формат.
* variable.name – назва стовпця, що міститиме назви змінних у довгому форматі.
* value.name – назва стовпця, що міститиме значення у довгому форматі.

Використання melt()

Розглянемо приклад датафрейма sales у широкому форматі:


sales <- data.frame(id = c(1, 2, 3),
product = c("A", "B", "C"),
sales_2020 = c(100, 200, 300),
sales_2021 = c(150, 250, 350))

Щоб перетворити sales у довгий формат за допомогою melt(), ми виконуємо:


sales_long <- melt(sales, id.vars = c("id", "product"),
measure.vars = c("sales_2020", "sales_2021"),
variable.name = "year", value.name = "sales")

Як результат, ми отримаємо:


id product year sales
1 1 A 2020 100
2 2 B 2020 200
3 3 C 2020 300
4 1 A 2021 150
5 2 B 2021 250
6 3 C 2021 350

Функція cast()

Функція cast() виконує зворотну операцію до melt(), перетворюючи дані з довгого формату у широкий. Вона групує дані за змінною, зазначеною в параметрі key, і розраховує агрегації, зазначені в параметрі value, для кожної змінної.

Синтаксис cast()


cast(data, formula, value, drop = FALSE, ...)

де:

* data – датафрейм, що підлягає перетворенню.
* formula – формула, що вказує змінну для групування та змінну для агрегації. Формула має формат key ~ value, де key – це змінна для групування, а value – змінна для агрегації.
* value – вектор функцій агрегації, що застосовуються до значень value.
* drop – логічне значення, що вказує, чи слід видалити змінну key з результуючого датафрейма.

Використання cast()

Продовжимо приклад з попереднього розділу. Щоб перетворити sales_long у широкий формат за допомогою cast(), ми виконуємо:


sales <- cast(sales_long, product ~ year, sales)

Як результат, ми отримаємо:


product 2020 2021
1 A 100 150
2 B 200 250
3 C 300 350

Висновок

Функції melt() та cast() є незамінними інструментами для зміни форми даних у R. Вони дозволяють трансформувати дані між широким і довгим форматами, що робить їх зручними для різних типів аналізу та візуалізації. Розуміння синтаксису та параметрів цих функцій дозволить вам ефективно використовувати їх для маніпуляції даними в R.

FAQ

1. Які переваги використання функцій melt() і cast() у R?

* Вони дозволяють змінювати форму даних відповідно до вимог аналізу.
* Довгий формат зручний для агрегації та перехресного аналізу.
* Широкий формат підходить для візуалізації та створення звітів.

2. Що таке змінна id.vars у функції melt()?

Змінна id.vars – це вектор стовпців, що містять ідентифікатори спостережень. Ці стовпці збережуться як окремі рядки у довгому форматі.

3. Які функції агрегації можна використовувати в параметрі value функції cast()?

Параметр value приймає вектор функцій агрегації, такі як sum(), mean(), median(), max(), min().

4. Чи можна використовувати функції melt() і cast() разом?

Так, ці функції можна використовувати послідовно для перетворення даних з одного формату в інший.

5. Як видалити змінну key з результуючого датафрейма після використання cast()?

Щоб видалити змінну key, встановіть аргумент drop у функції cast() на TRUE.

6. Які альтернативні функції можна використовувати для зміни форми даних у R?

* Функція pivot_longer() з пакету tidyr для перетворення у довгий формат.
* Функція pivot_wider() з пакету tidyr для перетворення у широкий формат.
* Функція reshape2::melt() з пакету reshape2 (застаріла, але все ще використовується в деяких випадках).

7. Як використовувати функції melt() і cast() для очищення даних?

Функція melt() може бути використана для виявлення пропущених значень у довгому форматі, а cast() – для перевірки дублікатів у широкому форматі.

8. Як оптимізувати використання функцій melt() і cast() для великих наборів даних?

Для великих наборів даних використовуйте data.table замість датафреймів R для покращення продуктивності.

9. Які ресурси доступні для отримання додаткової інформації про функції melt() і cast()?

* Документація функції melt()
* Документація функції cast()
* Курс DataCamp з перетворення даних у R

10. Як використовувати функції melt() і cast() для динамічного створення звітів?

Використовуйте поєднання melt(), cast() та функції tidyverse для динамічного створення звітів з різними форматами виведення (наприклад, PDF, HTML, Markdown).