Поиск по сайту:

Функции 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