Ako transponovať DataFrame v R

Ako Transponovat Dataframe V R



Transpozícia súboru údajov je jednou takou operáciou, ktorá reformuje údaje tak, aby spĺňali konkrétne požiadavky analýzy. Transpozícia množiny údajov zahŕňa obrátené riadky a stĺpce množiny údajov, výsledkom čoho je nová množina údajov s prepínanými stĺpcami a riadkami. R poskytuje niektoré funkcie na transpozíciu množiny údajov. V tomto článku sa budeme zaoberať rôznymi metódami transpozície pre DataFrames v R.

Príklad 1: Transponujte dátový rámec pomocou funkcie T() v R

Funkcia t() je vstavaná funkcia R, ktorá sa používa na transpozíciu DataFrame. Prevádza však DataFrame na maticu, takže každý nečíselný stĺpec je transformovaný na reťazce znakov. Zvážte nasledujúci skript R na transpozíciu 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 (Moje údaje)

Tu deklarujeme vektor MyData a priradíme mu data.frame(). Vložíme vzorové dáta, ktoré obsahujú tri stĺpce s hodnotami v rámci funkcie data.frame(). Potom použijeme funkciu „row.names()“ a nastavíme názvy riadkov pre hodnoty DataFrame „MyData“. Nakoniec transponujeme DataFrame „MyData“ pomocou funkcie t().



Nasledujúci výstup zobrazuje transpozíciu dátového rámca, kde sa názvy riadkov pôvodného dátového rámca stanú názvami stĺpcov transponovaného dátového rámca a názvy stĺpcov pôvodného dátového rámca sa pri transpozícii stratia:







Príklad 2: Transponujte DataFrame pomocou funkcie Transpose() v R

Na transpozíciu DataFrame možno použiť aj funkciu transpose() z balíka „data.table“ a vráti DataFrame. Preto sa musíme uistiť, že „data.table“ je nainštalovaný v R. Ak sa nenájde, môžeme ho nainštalovať pomocou nasledujúceho príkazu:

install.packages('data.table')

Teraz môžeme jednoducho importovať balík „data.table“, aby sme získali prístup k funkcii transpose() v R na transpozíciu DataFrame. Zvážte nasledujúci R kód, kde sa volá funkcia transpose() na transpozíciu 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

Tu vytvoríme „df“ DataFrame s tromi stĺpcami a piatimi riadkami, kde každý stĺpec obsahuje postupnosť čísel od 1 do 5, 6 do 10 a 11 až 15. Názvy riadkov DataFrame navyše priraďujeme pomocou funkcie row.names(). Potom vytlačíme pôvodný DataFrame na konzolu.

Pôvodný DataFrame je zobrazený na obrazovke tu:

Ďalej transponujeme pôvodný „df“ DataFrame prepnutím riadkov a stĺpcov DataFrame.

knižnica(data.table)

df_trans <- transponovať (df)

rownames(df_trans) <- colnames(df)

colnames(df_trans) <- rownames(df)

df_trans

Na tento účel najprv načítame knižnicu „data.table“, ktorá poskytuje nástroje na prácu s tabuľkovými údajmi v R. Potom sa z knižnice „data.table“ použije funkcia transpose(). Výsledný transponovaný DataFrame je priradený k novej premennej, ktorá je „df_t“. Potom priradíme názvy stĺpcov pôvodného DataFrame „df“ ako názvy riadkov k transponovanému DataFrame „df_trans“ pomocou funkcie rownames(). Potom sa názvy riadkov pôvodného dátového rámca „df“ priradia ako názvy stĺpcov do transponovaného dátového rámca „df_trans“ pomocou funkcie colnames().

Vo výstupe sa tak dosiahne pôvodná transpozícia DataFrame. Predstavuje každú bunku v transponovanom DataFrame, v ktorom obsahuje rovnakú hodnotu ako zodpovedajúca bunka v pôvodnom DataFrame, ale v inej polohe v dôsledku transpozície.

Príklad 3: Transponujte DataFrame pomocou funkcie Tidyr Library Gather() v R

Balík tidyr R možno použiť na transpozíciu dátového rámca. Táto metóda je užitočná, keď chceme previesť DataFrame zo širokého na dlhý formát a potom späť na široký formát s vymenenými riadkami a stĺpcami. Poskytuje niekoľko funkcií na transformáciu a reorganizáciu údajov. Predtým si musíme stiahnuť balík tidyr konkrétne pomocou nasledujúceho príkazu:

install.packages('uprataný')

Zoberme si nasledujúci R kód. Na dlhšie transponovanie širokého DataFrame používame funkciu collect() tohto balíka:

knižnica (upratovačka)

n = 10

tidy_df = data.frame(

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

uprataný_df

Tu sa „široký“ DataFrame skonvertuje na „dlhý“ DataFrame pomocou tidyr. Najprv vytvoríme DataFrame „tidy_df“ s tromi stĺpcami. Každý z týchto stĺpcov má 10 hodnôt.

Dlhý DataFrame sa zobrazí na nasledujúcej výstupnej obrazovke:

Potom odovzdáme DataFrame „tidy_df“ funkcii collect() s operátorom potrubia „%>%“. Funkcia collect() z tidyr sa používa na transformáciu „tidy_df“ na dlhý DataFrame. Funkcia collect() preberá vstupy s názvom „Skúšky“, ktorý označuje nový stĺpec pre názvy premenných, ktoré sa vytvoria pri transformácii. 'Marks' určuje stĺpec, ktorý zhromažďuje 'Exam1_Marks' a 'Exam2_Marks'.

dlhé <- tidy_df %>%

zbierať (skúšky, známky,
Exam1_Marks:Exam2_Marks)


dlhý

Výstup zobrazuje dlhý DataFrame do konzoly, ktorá má teraz „dlhý“ formát s tromi stĺpcami:

Príklad 4: Transponujte DataFrame pomocou funkcie Pivot_Wider() v R

Ďalšou pokročilou funkciou, ktorú používame na transpozíciu DataFrame, je funkcia pivot_wider(). Pivot_wider() je funkcia z balíka tidyr v R, ktorá nám umožňuje transformovať „dlhý“ DataFrame na „široký“ DataFrame. Funkcia má tri hlavné argumenty, o ktorých sa hovorí v nasledujúcom kóde R:

knižnica (upratovačka)

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

Tu najprv načítame balík tidyr pomocou funkcie library(). Potom nastavíme vzorový DataFrame do „df“. DataFrame „df“ má tri stĺpce, ktoré obsahujú rôzne hodnoty. Vzorový DataFrame je možné vidieť v nasledujúcom výstupe:

Potom sa funkcia pivot_wider() z tidyr použije na transformáciu „df“ na „df_wide“.

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

df_wide

Funkcia pivot_wider() tu má tri argumenty. Najprv je potrebné transformovať „df“ DataFrame. Potom argument names_from nastaví názov stĺpca, ktorý sa má použiť pre nové názvy premenných. Nakoniec argument values_from určuje názov stĺpca, ktorý sa má použiť pre nové hodnoty.

Nasledujúci výstup predstavuje transpozíciu dlhého DataFrame do širokého DataFrame:

Záver

Použili sme rôzne spôsoby na transpozíciu DataFrame v R. Prvý príklad je nastavený pomocou vstavanej metódy t(). Všetky ostatné príklady potrebovali balíky na import, aby sme mohli použiť ich funkcie na transpozíciu DataFrame. Najlepšia metóda však závisí od konkrétnej situácie a štruktúry údajov, s ktorými pracujete.