Как использовать функцию melt() в r


Вы можете использовать функцию Melt() пакета reshape2 в R для преобразования фрейма данных из широкого формата в длинный формат.

Широкий формат содержит значения, которые не повторяются в первом столбце.

Длинный формат содержит значения, повторяющиеся в первом столбце.

Например, рассмотрим следующие два набора данных, которые содержат одни и те же данные, выраженные в разных форматах:

Широкий или длинный формат данных

Функция Melt() использует следующий базовый синтаксис для преобразования широкоформатного фрейма данных в длинный формат:

 melt(df, id=' team ')

Аргумент id указывает, какую переменную использовать в качестве первого столбца фрейма данных, значения которого будут повторяться.

В следующем примере показано, как использовать эту функцию на практике.

Пример: как использовать Melt() в R

Предположим, у нас есть следующий кадр данных в R, который в настоящее время находится в широком формате:

 #create data frame in wide format
df <- data. frame (team=c('A', 'B', 'C', 'D'),
                 dots=c(88, 91, 99, 94),
                 assists=c(12, 17, 24, 28),
                 rebounds=c(22, 28, 30, 31))

#view data frame
df

  team points assists rebounds
1 A 88 12 22
2 B 91 17 28
3 C 99 24 30
4 D 94 28 31

Мы можем использовать функцию Melt() для быстрого преобразования фрейма данных в длинный формат:

 library (reshape2)

#use melt() to convert data frame from wide to long format
long_df <- melt(df, id=' team ')

#view long data frame
long_df

   team variable value
1 A points 88
2 B points 91
3 C points 99
4 D points 94
5 A assists 12
6 B assists 17
7 C assists 24
8 D assists 28
9 A rebounds 22
10 B rebounds 28
11 C rebounds 30
12 D rebounds 31

Обратите внимание, что кадр данных теперь имеет длинный формат.

Столбцы очков , передач и подборов были сжаты в один столбец, называемый переменной , а их значения были сжаты в один столбец, называемый значениями .

Не стесняйтесь переименовывать столбцы результирующего фрейма данных, используя функцию name() :

 #rename columns in long_df
names(long_df) <- c(' team ', ' metric ', ' amount ')

#view updated data frame
long_df

   team metric amount
1 A points 88
2 B points 91
3 C points 99
4 D points 94
5 A assists 12
6 B assists 17
7 C assists 24
8 D assists 28
9 A rebounds 22
10 B rebounds 28
11 C rebounds 30
12 D rebounds 31

Обратите внимание, что столбцы были переименованы.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как фильтровать строки в R
Как перенести фрейм данных в R
Как переименовать столбцы фрейма данных в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *