Как транспонировать DataFrame в R

Kak Transponirovat Dataframe V R



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

Пример 1. Транспонирование фрейма данных с помощью функции T() в R

Функция t() — это встроенная функция R, которая используется для транспонирования DataFrame. Однако он преобразует DataFrame в матрицу, поэтому любой нечисловой столбец преобразуется в символьные строки. Рассмотрим следующий R-скрипт для переноса DataFrame:







MyData = data.frame(c1 = c(1, 2, 3, 4, 5),

с2 = с(6, 7, 8, 9, 10),
с3 = с(11, 12, 13, 14, 15))

row.names(MyData) = c('r1','r2','r3','r4','r5')

т (мои данные)

Здесь мы объявляем вектор MyData и присваиваем ему data.frame(). Мы вставляем образец данных, который содержит три столбца со значениями в функции data.frame(). После этого мы используем функцию «row.names ()» и устанавливаем имена строк для значений DataFrame «MyData». Наконец, мы транспонируем DataFrame «MyData», используя функцию t().



Следующий вывод показывает транспонирование DataFrame, где имена строк исходного DataFrame становятся именами столбцов транспонированного DataFrame, а имена столбцов исходного DataFrame теряются при транспонировании:







Пример 2. Транспонирование фрейма данных с помощью функции Transpose() в R

Функцию transpose() из пакета «data.table» также можно использовать для транспонирования DataFrame, и она возвращает DataFrame. Поэтому мы должны убедиться, что «data.table» установлен в R. Если он не найден, мы можем установить его с помощью следующей команды:

установить.пакеты('данные.таблица')

Теперь мы можем легко импортировать пакет «data.table», чтобы получить доступ к функции transpose() в R для транспонирования DataFrame. Рассмотрим следующий код R, в котором вызывается функция transpose() для транспонирования DataFrame:



df <- data.frame(A = c(1:5),

В = с(6:10),
С = с (11:15))


row.names(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

дф

Здесь мы создаем DataFrame «df» с тремя столбцами и пятью строками, где каждый столбец содержит последовательность чисел от 1 до 5, от 6 до 10 и от 11 до 15 соответственно. Кроме того, мы присваиваем имена строк DataFrame с помощью функции row.names(). После этого мы печатаем исходный DataFrame в консоль.

Исходный DataFrame показан на экране здесь:

Затем мы транспонируем исходный DataFrame «df», переключая строки и столбцы DataFrame.

библиотека (данные.таблица)

df_trans <- транспонировать (df)

имена строк (df_trans) <- имена столбцов (df)

имена столбцов (df_trans) <- имена строк (df)

df_trans

Для этого мы сначала загружаем библиотеку «data.table», которая предоставляет инструменты для работы с табличными данными в R. Затем используется функция transpose() из библиотеки «data.table». Полученный транспонированный DataFrame присваивается новой переменной «df_t». После этого мы назначаем имена столбцов исходного кадра данных «df» в качестве имен строк транспонированному кадру данных «df_trans», используя функцию rownames(). Затем имена строк исходного кадра данных «df» назначаются в качестве имен столбцов транспонированному кадру данных «df_trans» с помощью функции colnames().

Таким образом, исходная транспозиция DataFrame достигается на выходе. Он представляет каждую ячейку в транспонированном фрейме данных, в которой она содержит то же значение, что и соответствующая ячейка в исходном фрейме данных, но в другом положении из-за транспонирования.

Пример 3. Транспонирование фрейма данных с помощью функции Gather() библиотеки Tidyr в R

Пакет tidyr R можно использовать для переноса DataFrame. Этот метод полезен, когда мы хотим преобразовать DataFrame из широкого формата в длинный, а затем обратно в широкий формат с заменой строк и столбцов. Он предоставляет несколько функций для преобразования и реорганизации данных. Перед этим нам нужно загрузить пакет tyr, используя следующую команду:

install.packages('тидыр')

Давайте рассмотрим следующий R-код. Мы используем функцию collect() этого пакета, чтобы дольше транспонировать широкий DataFrame:

библиотека (тидыр)

п = 10

tidy_df = data.frame(

ID = с(1:n),
Exam1_Marks = c(73, 219, 86, 192, 99,
188, 72, 35, 91, 165),
Exam2_Marks = c(217, 89, 66, 334, 99,
101, 108, 233, 45, 300),
Exam3_Marks = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))

tidy_df

Здесь «широкий» DataFrame преобразуется в «длинный» DataFrame с помощью tyr. Сначала мы создаем DataFrame «tidy_df» с тремя столбцами. Каждый из этих столбцов имеет 10 значений.

Длинный DataFrame показан на следующем экране вывода:

Затем мы передаем DataFrame «tidy_df» в функцию collect () с оператором конвейера «%>%». Функция Gather () из tidyr используется для преобразования «tidy_df» в длинный DataFrame. Функция collect() принимает входные данные с именем «Экзамены», которое указывает на новый столбец для хранения имен переменных, созданных в ходе преобразования. «Marks» указывает столбец, в котором собраны «Exam1_Marks» и «Exam2_Marks».

длинный <- tidy_df %>%

собрать(экзамены, оценки,
Exam1_Marks:Exam2_Marks)


длинный

Вывод отображает длинный DataFrame на консоль, которая теперь имеет «длинный» формат с тремя столбцами:

Пример 4. Транспонирование фрейма данных с помощью функции Pivot_Wider() в R

Следующая расширенная функция, которую мы используем для транспонирования DataFrame, — это функция pivot_wider(). pivot_wider() — это функция из пакета tidyr в R, которая позволяет нам преобразовать «длинный» DataFrame в «широкий» DataFrame. Функция принимает три основных аргумента, которые обсуждаются в следующем коде R:

библиотека (тидыр)

df <- data.frame(

идентификатор = с (1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
знач = с(4, 5, 6, 7, 8, 9)


)

дф

Здесь мы сначала загружаем пакет tyr, используя функцию library(). Затем мы устанавливаем образец DataFrame в «df». DataFrame «df» имеет три столбца, которые соответственно содержат разные значения. Образец DataFrame можно увидеть в следующем выводе:

После этого функция pivot_wider() из tyryr используется для преобразования «df» в «df_wide».

df_wide <- pivot_wider(df, name_from = var, values_from = val)

df_wide

Здесь функция pivot_wider() принимает три аргумента. Во-первых, для преобразования требуется DataFrame «df». Затем аргумент name_from задает имя столбца, которое будет использоваться для новых имен переменных. Наконец, аргумент values_from указывает имя столбца, которое будет использоваться для новых значений.

Следующий вывод представляет собой преобразование длинного кадра данных в широкий кадр данных:

Заключение

Мы использовали различные способы транспонирования DataFrame в R. Первый пример задается встроенным методом t(). Все остальные примеры нуждались в импорте пакетов, чтобы мы могли использовать их функции для транспонирования DataFrame. Однако лучший метод для использования зависит от конкретной ситуации и структуры данных, с которыми вы работаете.