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

Kak Da Transponirate Dataframe V R



Транспонирането на набор от данни е една такава операция, която реформира данните, за да отговори на конкретните изисквания на анализа. Транспонирането на набор от данни включва обърнати редове и колони от набора от данни, което води до нов набор от данни с превключени колони и редове. R предоставя някои функции за транспониране на набор от данни. В тази статия ще разгледаме различните методи за транспониране за DataFrames в R.

Пример 1: Транспониране на DataFrame с помощта на функцията T() в R

Функцията t() е вградена функция на R, която се използва за транспониране на DataFrame. Той обаче преобразува DataFrame в матрица, така че всяка нечислова колона се трансформира в символни низове. Помислете за следния R скрипт, за да транспонирате DataFrame:







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

c2 = c(6, 7, 8, 9, 10),
c3 = c(11, 12, 13, 14, 15))

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

t(Моите данни)

Тук декларираме вектора MyData и му присвояваме data.frame(). Вмъкваме примерните данни, които съдържат три колони със стойностите във функцията data.frame(). След това използваме функцията “row.names()” и задаваме имената на редовете за стойностите на “MyData” DataFrame. Накрая транспонираме DataFrame „MyData“ с помощта на функцията t().



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







Пример 2: Транспониране на DataFrame с помощта на функцията Transpose() в R

Функцията transpose() от пакета „data.table“ също може да се използва за транспониране на DataFrame и връща DataFrame. Следователно трябва да се уверим, че „data.table“ е инсталиран в R. Ако не бъде намерен, можем да го инсталираме със следната команда:

install.packages('data.table')

Сега можем лесно да импортираме пакета „data.table“ за достъп до функцията transpose() в R за транспониране на DataFrame. Разгледайте следния R код, където функцията transpose() се извиква за транспониране на DataFrame:



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

B = c(6:10),
C = c(11:15))


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

df

Тук създаваме „df“ DataFrame с три колони и пет реда, където всяка колона съдържа съответно поредица от числа от 1 до 5, 6 до 10 и 11 до 15. Освен това присвояваме имената на редовете на DataFrame с помощта на функцията row.names(). След това отпечатваме оригиналния DataFrame на конзолата.

Оригиналният DataFrame е показан на екрана тук:

След това транспонираме оригиналния „df“ DataFrame, като превключваме редовете и колоните на DataFrame.

библиотека (data.table)

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

имена на редове (df_trans) <- имена на колони (df)

имена на колони (df_trans) <- имена на редове (df)

df_trans

За целта първо зареждаме библиотеката „data.table“, която предоставя инструментите за работа с табличните данни в R. След това се използва функцията transpose() от библиотеката „data.table“. Полученият транспониран DataFrame се присвоява на нова променлива, която е „df_t“. След това присвояваме имената на колоните на оригиналната „df“ DataFrame като имена на редове към транспонираната „df_trans“ DataFrame с помощта на функцията rownames(). След това имената на редовете на оригиналната “df” DataFrame се присвояват като имена на колони към транспонираната “df_trans” DataFrame с помощта на функцията colnames().

По този начин в изхода се постига оригиналното транспониране на DataFrame. Той представлява всяка клетка в транспонираната DataFrame, в която съдържа същата стойност като съответната клетка в оригиналната DataFrame, но в различна позиция поради транспонирането.

Пример 3: Транспониране на DataFrame с помощта на функцията Tidyr Library Gather() в R

Пакетът tidyr на R може да се използва за транспониране на DataFrame. Този метод е полезен, когато искаме да конвертираме DataFrame от широк в дълъг формат и след това обратно в широк формат с разменени редове и колони. Той предоставя няколко функции за трансформиране и реорганизиране на данните. Преди това трябва да изтеглим пакета tidyr конкретно чрез следната команда:

install.packages('tidyr')

Нека разгледаме следния R код. Използваме функцията gather() на този пакет, за да транспонираме широката DataFrame по-дълго:

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

n = 10

tidy_df = data.frame(

ID = c(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),
Изпит3_марки = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))

tidy_df

Тук „широк“ DataFrame се преобразува в „дълъг“ DataFrame с помощта на tidyr. Първо създаваме “tidy_df” DataFrame с три колони. Всяка от тези колони има 10 стойности.

Дългият DataFrame се показва в следния изходен екран:

След това предаваме „tidy_df“ DataFrame на функцията gather() с конвейерния оператор „%>%“. Функцията gather() от tidyr се използва за трансформиране на “tidy_df” в дълъг DataFrame. Функцията gather() приема входове с името „Изпити“, което указва нова колона за съхранение на имената на променливите, които са създадени при трансформацията. „Marks“ указва колоната, която събира „Exam1_Marks“ и „Exam2_Marks“ заедно.

дълго <- tidy_df %>%

събирам (изпити, оценки,
Изпит1_Оценки:Изпит2_Оценки)


дълго

Изходът показва дългата DataFrame към конзолата, която сега има „дълъг“ формат с три колони:

Пример 4: Транспониране на DataFrame с помощта на функцията Pivot_Wider() в R

Следващата разширена функция, която използваме за транспониране на DataFrame, е функцията pivot_wider(). Pivot_wider() е функция от пакета tidyr в R, която ни позволява да трансформираме „дълъг“ DataFrame в „широк“ DataFrame. Функцията приема три основни аргумента, които се обсъждат в следния код на R:

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

df <- data.frame(

id = c(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
val = c(4, 5, 6, 7, 8, 9)


)

df

Тук първо зареждаме пакета tidyr с помощта на функцията library(). След това задаваме примерния DataFrame в „df“. “df” DataFrame има три колони, които съдържат съответно различни стойности. Примерният DataFrame може да се види в следния изход:

След това функцията pivot_wider() от tidyr се използва за трансформиране на „df“ в „df_wide“.

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

df_wide

Функцията pivot_wider() тук приема три аргумента. Първо, трябва да се трансформира „df“ DataFrame. След това аргументът names_from задава името на колоната, което да се използва за новите имена на променливи. И накрая, аргументът values_from указва името на колоната, което да се използва за новите стойности.

Следният изход представлява транспонирането на дългата DataFrame в широката DataFrame:

Заключение

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