Transponiranje skupa podataka je jedna takva operacija koja reformira podatke kako bi zadovoljili posebne zahtjeve analize. Transponiranje skupa podataka uključuje obrnute retke i stupce skupa podataka, što rezultira novim skupom podataka sa zamijenjenim stupcima i redcima. R pruža neke funkcije za transponiranje skupa podataka. U ovom ćemo članku pokriti različite metode transponiranja za DataFrames u R.
Primjer 1: Transponiranje DataFramea pomoću funkcije T() u R
Funkcija t() je ugrađena funkcija R koja se koristi za transponiranje DataFramea. Međutim, pretvara DataFrame u matricu, tako da se svaki nenumerički stupac transformira u znakovne nizove. Razmotrite sljedeću R skriptu za transponiranje DataFramea:
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(Moji podaci)
Ovdje deklariramo vektor MyData i dodjeljujemo mu data.frame(). Umetnemo ogledne podatke koji sadrže tri stupca s vrijednostima unutar funkcije data.frame(). Nakon toga koristimo funkciju “row.names()” i postavljamo nazive redaka za vrijednosti DataFramea “MyData”. Konačno, transponiramo 'MyData' DataFrame pomoću funkcije t().
Sljedeći izlaz prikazuje transpoziciju DataFramea gdje nazivi redaka izvornog DataFramea postaju nazivi stupaca transponiranog DataFramea, a nazivi stupaca izvornog DataFramea gube se u transponiranju:
Primjer 2: Transponirajte DataFrame pomoću funkcije Transpose() u R
Funkcija transpose() iz paketa “data.table” također se može koristiti za transponiranje DataFramea i vraća DataFrame. Stoga moramo biti sigurni da je “data.table” instaliran u R. Ako nije pronađen tada, možemo ga instalirati sljedećom naredbom:
install.packages('data.table')Sada možemo jednostavno uvesti paket 'data.table' za pristup funkciji transpose() u R za transponiranje DataFramea. Razmotrite sljedeći R kod gdje se funkcija transpose() poziva za transponiranje DataFramea:
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
Ovdje stvaramo 'df' DataFrame s tri stupca i pet redaka gdje svaki stupac sadrži niz brojeva od 1 do 5, 6 do 10, odnosno od 11 do 15. Dodatno, dodjeljujemo nazive redaka DataFrame pomoću funkcije row.names(). Nakon toga ispisujemo originalni DataFrame na konzolu.
Izvorni DataFrame prikazan je na zaslonu ovdje:
Zatim transponiramo izvorni 'df' DataFrame mijenjanjem redaka i stupaca DataFramea.
biblioteka(podaci.tablica)df_trans <- transponirati(df)
imena redaka (df_trans) <- imena stupaca (df)
imena stupaca (df_trans) <- imena redaka (df)
df_trans
Za ovo prvo učitavamo biblioteku 'data.table' koja pruža alate za rad s tabličnim podacima u R. Zatim se koristi funkcija transpose() iz biblioteke 'data.table'. Rezultirajući transponirani DataFrame dodjeljuje se novoj varijabli koja je 'df_t'. Nakon toga dodjeljujemo nazive stupaca izvornog 'df' DataFramea kao imena redaka transponiranom 'df_trans' DataFrameu pomoću funkcije rownames(). Zatim se nazivi redaka izvornog 'df' DataFramea dodjeljuju kao nazivi stupaca transponiranom 'df_trans' DataFrameu pomoću funkcije colnames().
Dakle, izvorna DataFrame transpozicija se postiže u izlazu. Predstavlja svaku ćeliju u transponiranom DataFrameu u kojem sadrži istu vrijednost kao odgovarajuća ćelija u izvornom DataFrameu, ali na drugom položaju zbog transpozicije.
Primjer 3: Transponiranje DataFramea pomoću funkcije Tidyr Library Gather() u R
Paket tidyr od R može se koristiti za transponiranje DataFramea. Ova metoda je korisna kada želimo pretvoriti DataFrame iz širokog u dugi format, a zatim natrag u široki format sa zamijenjenim redcima i stupcima. Omogućuje nekoliko funkcija za transformaciju i reorganizaciju podataka. Prije toga moramo preuzeti tidyr paket posebno pomoću sljedeće naredbe:
install.packages('tidyr')Razmotrimo sljedeći R kod. Koristimo funkciju gather() ovog paketa za dulje transponiranje širokog DataFramea:
knjižnica (tidyr)n = 10
uredan_df = data.frame(
ID = c(1:n),
Ispit1_Ocjene = c(73, 219, 86, 192, 99,
188, 72, 35, 91, 165),
Ispit2_Ocjene = c(217, 89, 66, 334, 99,
101, 108, 233, 45, 300),
Ispit3_Ocjene = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))
uredan_df
Ovdje se 'široki' DataFrame pretvara u 'dugi' DataFrame pomoću tidyra. Prvo stvaramo 'tidy_df' DataFrame s tri stupca. Svaki od ovih stupaca ima 10 vrijednosti.
Dugački DataFrame prikazan je na sljedećem izlaznom ekranu:
Zatim prosljeđujemo “tidy_df” DataFrame funkciji gather() s operatorom cijevi “%>%”. Funkcija gather() iz tidyra koristi se za transformaciju 'tidy_df' u dugački DataFrame. Funkcija gather() uzima ulaze s nazivom 'Ispiti' koji označava novi stupac za držanje naziva varijabli koje su stvorene u transformaciji. “Ocjene” određuju stupac koji skuplja “Ocjene za ispit1” i “Ocjene za ispit2”.
dugo <- uredan_df %>%skupiti (ispiti, ocjene,
Ispit1_Ocjene:Ispit2_Ocjene)
dugo
Izlaz prikazuje dugi DataFrame na konzoli koji sada ima 'dugi' format s tri stupca:
Primjer 4: Transponiranje DataFramea pomoću funkcije Pivot_Wider() u R-u
Sljedeća napredna funkcija koju koristimo za transponiranje DataFramea je funkcija pivot_wider(). Pivot_wider() je funkcija iz paketa tidyr u R-u koja nam omogućuje transformaciju 'dugačkog' DataFramea u 'široki' DataFrame. Funkcija uzima tri glavna argumenta o kojima se govori u sljedećem kodu R-a:
knjižnica (tidyr)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
Ovdje prvo učitavamo paket tidyr pomoću funkcije library(). Zatim postavljamo ogledni DataFrame u 'df'. “df” DataFrame ima tri stupca koji sadrže različite vrijednosti, u skladu s tim. Uzorak DataFramea može se vidjeti u sljedećem izlazu:
Nakon toga, funkcija pivot_wider() iz tidyra koristi se za transformaciju 'df' u 'df_wide'.
df_wide <- pivot_wider(df, names_from = var, values_from = val)df_široko
Funkcija pivot_wider() ovdje uzima tri argumenta. Prvo, potrebno je 'df' DataFrame transformirati. Zatim, argument names_from postavlja naziv stupca koji će se koristiti za nova imena varijabli. Konačno, argument values_from navodi naziv stupca koji će se koristiti za nove vrijednosti.
Sljedeći izlaz predstavlja transpoziciju dugog DataFramea u široki DataFrame:
Zaključak
Koristili smo različite načine za transponiranje DataFramea u R. Prvi primjer je postavljen pomoću ugrađene metode t(). Svi ostali primjeri trebali su pakete za uvoz kako bismo mogli koristiti njihove funkcije za prijenos DataFramea. Međutim, najbolja metoda ovisi o specifičnoj situaciji i strukturi podataka s kojima radite.