Функции Rmelt() и cast() — изменение формы данных в R
Здравствуйте, читатели! В этой статье мы подробно рассмотрим важную концепцию программирования на R — изменение формы данных с помощью функций Rmelt() и cast().
Функции Rmelt() и cast() помогают нам преобразовать данные в фрейме данных в любую настраиваемую форму.
Работа с функциями Rmelt() и cast()
Давайте разберем обе функции подробно. Вот так!
Функция I. R Melt()
Функция melt()
в программировании на R является встроенной функцией. Это позволяет нам изменять форму и удлинять фреймы данных в соответствии с заданным пользователем способом. Он организует значения данных в формате длинного фрейма данных.
Взгляните на приведенный ниже синтаксис!
Синтаксис:
melt(data-frame, na.rm = FALSE, value.name = “name”, id = 'columns')
Мы передаем фрейм данных в измененную функцию вместе с na.rm=FALSE в качестве значения по умолчанию, что означает, что значения NA не будут игнорироваться.
Далее мы передаем новое имя переменной/столбца в параметр value.name для сохранения в нем вытянутых значений, полученных из функции.
Параметр ID устанавливается на имена столбцов фрейма данных, относительно которых будет происходить изменение формы.
Пример:
В этом примере мы будем использовать библиотеки MASS, reshape2 и reshape. Создав фрейм данных, мы применяем функцию Melt() к фрейму данных в отношении столбцов A и B.
rm(list = ls())
install.packages("MASS")
install.packages("reshape2")
install.packages("reshape")
library(MASS)
library(reshape2)
library(reshape)
A <- c(1,2,3,4,2,3,4,1)
B <- c(1,2,3,4,2,3,4,1)
a <- c(10,20,30,40,50,60,70,80)
b <- c(100,200,300,400,500,600,700,800)
data <- data.frame(A,B,a,b)
print("Original data frame:\n")
print(data)
melt_data <- melt(data, id = c("A","B"))
print("Reshaped data frame:\n")
print(melt_data)
Выход:
[1] "Original data frame:\n"
A B a b
1 1 1 10 100
2 2 2 20 200
3 3 3 30 300
4 4 4 40 400
5 2 2 50 500
6 3 3 60 600
7 4 4 70 700
8 1 1 80 800
[1] "Reshaped data frame:\n"
> print(melt_data)
A B variable value
1 1 1 a 10
2 2 2 a 20
3 3 3 a 30
4 4 4 a 40
5 2 2 a 50
6 3 3 a 60
7 4 4 a 70
8 1 1 a 80
9 1 1 b 100
10 2 2 b 200
11 3 3 b 300
12 4 4 b 400
13 2 2 b 500
14 3 3 b 600
15 4 4 b 700
16 1 1 b 800
II. Функция Rcast()
Как видно выше, после применения функции Melt() фрейм данных преобразуется в удлиненный фрейм данных. Чтобы восстановить почти первоначальную и естественную форму фрейма данных, используется функция R cast()
.
Функция cast() принимает агрегированную функцию и формулу в качестве параметра (здесь формула — это способ представления данных после изменения формы) и преобразует удлиненный или слитый фрейм данных в почти агрегированная форма фрейма данных.
Синтаксис:
cast(data, formula, aggregate function)
Мы можем предоставить функцию cast() с любой доступной агрегатной функцией, такой как среднее значение, сумма и т. д.
Пример:
rm(list = ls())
library(MASS)
library(reshape2)
library(reshape)
A <- c(1,2,3,4,2,3,4,1)
B <- c(1,2,3,4,2,3,4,1)
a <- c(10,20,30,40,50,60,70,80)
b <- c(100,200,300,400,500,600,700,800)
data <- data.frame(A,B,a,b)
print("Original data frame:\n")
print(data)
melt_data <- melt(data, id = c("A"))
print("Reshaped data frame after melting:\n")
print(melt_data)
cast_data = cast(melt_data, A~variable, mean)
print("Reshaped data frame after casting:\n")
print(cast_data)
Как видно выше, мы передали среднее значение в качестве агрегатной функции в функцию cast() и установили переменную, эквивалентную переменной A, в качестве формата представления.
Выход:
[1] "Original data frame:\n"
A B a b
1 1 1 10 100
2 2 2 20 200
3 3 3 30 300
4 4 4 40 400
5 2 2 50 500
6 3 3 60 600
7 4 4 70 700
8 1 1 80 800
[1] "Reshaped data frame after melting:\n"
A variable value
1 1 B 1
2 2 B 2
3 3 B 3
4 4 B 4
5 2 B 2
6 3 B 3
7 4 B 4
8 1 B 1
9 1 a 10
10 2 a 20
11 3 a 30
12 4 a 40
13 2 a 50
14 3 a 60
15 4 a 70
16 1 a 80
17 1 b 100
18 2 b 200
19 3 b 300
20 4 b 400
21 2 b 500
22 3 b 600
23 4 b 700
24 1 b 800
[1] "Reshaped data frame after casting:\n"
A B a b
1 1 1 45 450
2 2 2 35 350
3 3 3 45 450
4 4 4 55 550
Заключение
На этом мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если у вас возникнут какие-либо вопросы.
А пока удачного обучения!! :)
Ссылка:
- https://www.rdocumentation.org/packages/reshape2/versions/1.4.4/topics/melt
- https://www.rdocumentation.org/packages/reshape2/versions/1.4.4/topics/cast