Функції 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).