Jak transponovat DataFrame v R

Jak Transponovat Dataframe V R



Transpozice datové sady je jednou z takových operací, která reformuje data tak, aby splňovala konkrétní požadavky analýzy. Transponování datové sady zahrnuje obrácené řádky a sloupce datové sady, což má za následek novou datovou sadu s přepínanými sloupci a řádky. R poskytuje některé funkce pro transpozici datové sady. V tomto článku se budeme zabývat různými metodami transpozice pro DataFrames v R.

Příklad 1: Transponujte DataFrame pomocí funkce T() v R

Funkce t() je vestavěná funkce R, která se používá k transpozici DataFrame. Převádí však DataFrame na matici, takže jakýkoli nečíselný sloupec je transformován na znakové řetězce. Pro transpozici DataFrame zvažte následující R skript:







MojeData = 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 data)

Zde deklarujeme vektor MyData a přiřadíme mu data.frame(). Vložíme ukázková data, která obsahují tři sloupce s hodnotami ve funkci data.frame(). Poté použijeme funkci „row.names()“ a nastavíme názvy řádků pro hodnoty DataFrame „MyData“. Nakonec transponujeme DataFrame „MyData“ pomocí funkce t().



Následující výstup ukazuje transpozici DataFrame, kde se názvy řádků původního DataFrame stanou názvy sloupců transponovaného DataFrame a názvy sloupců původního DataFrame se při transpozici ztratí:







Příklad 2: Transponujte DataFrame pomocí funkce Transpose() v R

Funkci transpose() z balíčku „data.table“ lze také použít k transpozici DataFrame a vrátí DataFrame. Musíme se tedy ujistit, že „data.table“ je nainstalován v R. Pokud není nalezen, můžeme jej nainstalovat pomocí následujícího příkazu:

install.packages('data.table')

Nyní můžeme snadno importovat balíček „data.table“, abychom získali přístup k funkci transpose() v R pro transpozici DataFrame. Zvažte následující R kód, kde je funkce transpose() volána k transpozici 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

Zde vytvoříme „df“ DataFrame se třemi sloupci a pěti řádky, kde každý sloupec obsahuje sekvenci čísel od 1 do 5, 6 do 10 a 11 až 15. Navíc přiřazujeme názvy řádků DataFrame pomocí funkce row.names(). Poté vytiskneme původní DataFrame na konzoli.

Původní DataFrame je zobrazen na obrazovce zde:

Dále transponujeme původní „df“ DataFrame přepínáním řádků a sloupců DataFrame.

knihovna(data.tabulka)

df_trans <- transpose(df)

rownames(df_trans) <- colnames(df)

colnames(df_trans) <- rownames(df)

df_trans

K tomu nejprve načteme knihovnu „data.table“, která poskytuje nástroje pro práci s tabulkovými daty v R. Poté se z knihovny „data.table“ použije funkce transpose(). Výsledný transponovaný DataFrame je přiřazen nové proměnné, která je „df_t“. Poté přiřadíme názvy sloupců původního „df“ DataFrame jako názvy řádků k transponovanému DataFrame „df_trans“ pomocí funkce rownames(). Poté jsou názvy řádků původního datového rámce „df“ přiřazeny jako názvy sloupců k transponovanému datovému rámci „df_trans“ pomocí funkce colnames().

Ve výstupu je tedy dosaženo původní transpozice DataFrame. Představuje každou buňku v transponovaném DataFrame, ve kterém obsahuje stejnou hodnotu jako odpovídající buňka v původním DataFrame, ale v jiné pozici kvůli transpozici.

Příklad 3: Transponujte DataFrame pomocí funkce Tidyr Library Gather() v R

Balíček tidyr R lze použít k transpozici DataFrame. Tato metoda je užitečná, když chceme převést DataFrame ze širokého na dlouhý formát a poté zpět na široký formát s prohozenými řádky a sloupci. Poskytuje několik funkcí pro transformaci a reorganizaci dat. Předtím si musíme stáhnout balíček tidyr konkrétně pomocí následujícího příkazu:

install.packages('uklizený')

Podívejme se na následující R kód. K delší transpozici širokého DataFrame používáme funkci collect() tohoto balíčku:

knihovna (uklízečka)

n = 10

tidy_df = data.frame(

ID = c(1:n),
Test1_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))

uklizený_df

Zde je „široký“ DataFrame převeden na „dlouhý“ DataFrame pomocí tidyr. Nejprve vytvoříme „tidy_df“ DataFrame se třemi sloupci. Každý z těchto sloupců má 10 hodnot.

Dlouhý DataFrame je zobrazen na následující výstupní obrazovce:

Poté předáme DataFrame „tidy_df“ funkci collect() s operátorem roury „%>%“. Funkce collect() z tidyr se používá k transformaci „tidy_df“ na dlouhý DataFrame. Funkce shromáždit() přijímá vstupy s názvem „Zkoušky“, který označuje nový sloupec obsahující názvy proměnných, které byly vytvořeny při transformaci. „Marks“ určuje sloupec, který shromažďuje „Exam1_Marks“ a „Exam2_Marks“.

dlouhé <- tidy_df %>%

shromáždit (zkoušky, známky,
Exam1_Marks:Exam2_Marks)


dlouho

Výstup zobrazí konzoli dlouhý DataFrame, který má nyní „dlouhý“ formát se třemi sloupci:

Příklad 4: Transponujte DataFrame pomocí funkce Pivot_Wider() v R

Další pokročilou funkcí, kterou používáme k transpozici DataFrame, je funkce pivot_wider(). Pivot_wider() je funkce z balíčku tidyr v R, která nám umožňuje transformovat „dlouhý“ DataFrame na „široký“ DataFrame. Funkce má tři hlavní argumenty, které jsou popsány v následujícím kódu R:

knihovna (uklízeč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

Zde nejprve načteme balíček tidyr pomocí funkce library(). Poté nastavíme ukázkový DataFrame do „df“. DataFrame „df“ má tři sloupce, které obsahují různé hodnoty. Ukázkový DataFrame lze vidět v následujícím výstupu:

Poté se funkce pivot_wider() z tidyr použije k transformaci „df“ na „df_wide“.

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

df_wide

Funkce pivot_wider() zde přebírá tři argumenty. Nejprve je třeba transformovat „df“ DataFrame. Potom argument names_from nastaví název sloupce, který se má použít pro nové názvy proměnných. Nakonec argument values_from určuje název sloupce, který se má použít pro nové hodnoty.

Následující výstup představuje transpozici dlouhého DataFrame do širokého DataFrame:

Závěr

Použili jsme různé způsoby, jak transponovat DataFrame v R. První příklad je nastaven pomocí vestavěné metody t(). Všechny ostatní příklady potřebovaly balíčky importovat, abychom mohli použít jejich funkce pro transpozici DataFrame. Nejlepší způsob použití však závisí na konkrétní situaci a struktuře dat, se kterými pracujete.