Hvordan transponere DataFrame i R

Hvordan Transponere Dataframe I R



Transponering av et datasett er en slik operasjon som reformerer dataene for å møte de spesielle kravene til analysen. Transponering av et datasett involverer inverterte rader og kolonner i datasettet, noe som resulterer i et nytt datasett med byttede kolonner og rader. R gir noen funksjoner for å transponere et datasett. I denne artikkelen vil vi dekke de ulike transponeringsmetodene for DataFrames i R.

Eksempel 1: Transponer DataFrame ved å bruke T()-funksjonen i R

t()-funksjonen er en innebygd funksjon av R som brukes til å transponere en DataFrame. Imidlertid konverterer den DataFrame til en matrise, slik at enhver ikke-numerisk kolonne blir transformert til tegnstrenger. Tenk på følgende R-skript for å transponere 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)

Her erklærer vi MyData-vektoren og tildeler data.frame() til den. Vi setter inn eksempeldataene som inneholder tre kolonner med verdiene innenfor data.frame()-funksjonen. Etter det bruker vi funksjonen 'row.names()' og setter radnavnene for verdiene til 'MyData' DataFrame. Til slutt transponerer vi 'MyData' DataFrame ved å bruke t()-funksjonen.



Følgende utdata viser transposisjonen av DataFrame der radnavnene til den originale DataFrame blir kolonnenavnene til den transponerte DataFrame, og kolonnenavnene til den originale DataFrame går tapt i transposisjonen:







Eksempel 2: Transponer DataFrame ved å bruke Transpose()-funksjonen i R

Transpose()-funksjonen fra 'data.table'-pakken kan også brukes til å transponere en DataFrame, og den returnerer en DataFrame. Derfor må vi sørge for at 'data.table' er installert i R. Hvis den ikke blir funnet, kan vi installere den med følgende kommando:

install.packages('data.table')

Nå kan vi enkelt importere 'data.table'-pakken for å få tilgang til transpose()-funksjonen i R for å transponere DataFrame. Tenk på følgende R-kode der transpose()-funksjonen kalles for å transponere 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

Her lager vi 'df' DataFrame med tre kolonner og fem rader der hver kolonne inneholder en sekvens av tall fra henholdsvis 1 til 5, 6 til 10 og 11 til 15. I tillegg tildeler vi DataFrame-radnavnene ved å bruke funksjonen row.names(). Etter det skriver vi ut den originale DataFrame til konsollen.

Den originale DataFrame vises på skjermen her:

Deretter transponerer vi den originale 'df' DataFrame ved å bytte rader og kolonner i DataFrame.

library(data.table)

df_trans <- transponere(df)

radnavn(df_trans) <- kolonnenavn(df)

colnames(df_trans) <- rownames(df)

df_trans

For dette laster vi først «data.table»-biblioteket som gir verktøyene for å jobbe med tabelldataene i R. Deretter brukes transpose()-funksjonen fra «data.table»-biblioteket. Den resulterende transponerte DataFrame blir tilordnet en ny variabel som er 'df_t'. Etter det tildeler vi kolonnenavnene til den originale 'df' DataFrame som radnavn til den transponerte 'df_trans' DataFrame ved å bruke rownames()-funksjonen. Deretter blir radnavnene til den originale 'df' DataFrame tilordnet som kolonnenavn til den transponerte 'df_trans' DataFrame ved å bruke colnames()-funksjonen.

Dermed oppnås den originale DataFrame-transposisjonen i utdataene. Den representerer hver celle i den transponerte DataFrame der den inneholder samme verdi som den tilsvarende cellen i den originale DataFrame, men i en annen posisjon på grunn av transposisjonen.

Eksempel 3: Transponer DataFrame ved å bruke Tidyr Library Gather()-funksjonen i R

Tidyr-pakken til R kan brukes til å transponere en DataFrame. Denne metoden er nyttig når vi ønsker å konvertere en DataFrame fra bredt til langt format, og deretter tilbake til bredt format med byttede rader og kolonner. Det gir flere funksjoner for å transformere og omorganisere dataene. Før dette må vi laste ned tidyr-pakken spesifikt ved å bruke følgende kommando:

install.packages('tidyr')

La oss vurdere følgende R-kode. Vi bruker gather()-funksjonen til denne pakken for å transponere den brede DataFrame lenger:

bibliotek (tidyr)

n = 10

tidy_df = data.frame(

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

ryddig_df

Her konverteres en 'bred' DataFrame til en 'lang' DataFrame ved hjelp av tidyr. Først lager vi en 'tidy_df' DataFrame med tre kolonner. Hver av disse kolonnene har 10 verdier.

Den lange DataFrame vises i følgende utdataskjerm:

Deretter sender vi 'tidy_df' DataFrame til gather()-funksjonen med røroperatøren '%>%'. gather()-funksjonen fra tidyr brukes til å transformere 'tidy_df' til en lang DataFrame. gather()-funksjonen tar inndata med navnet 'Eksamener' som indikerer en ny kolonne for å inneholde variabelnavnene som opprettes i transformasjonen. 'Merker' spesifiserer kolonnen som samler 'Eksamen1_merker' og 'Eksamen2_merker' sammen.

lang <- tidy_df %>%

samle (eksamener, karakterer,
Exam1_Marks:Exam2_Marks)


lang

Utdataene viser den lange DataFrame til konsollen som nå har et 'langt' format med tre kolonner:

Eksempel 4: Transponer DataFrame ved å bruke Pivot_Wider()-funksjonen i R

Den neste avanserte funksjonen som vi bruker for å transponere DataFrame er pivot_wider() funksjonen. Pivot_wider() er en funksjon fra tidyr-pakken i R som lar oss transformere en 'lang' DataFrame til en 'bred' DataFrame. Funksjonen tar tre hovedargumenter som diskuteres i følgende R-kode:

bibliotek (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

Her laster vi først tidyr-pakken ved hjelp av library()-funksjonen. Deretter setter vi eksempelet DataFrame i 'df'. 'df' DataFrame har tre kolonner som inneholder forskjellige verdier, tilsvarende. Eksempelet DataFrame kan sees i følgende utdata:

Etter det brukes pivot_wider()-funksjonen fra tidyr til å transformere 'df' til 'df_wide'.

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

df_wide

Pivot_wider()-funksjonen tar tre argumenter her. Først tar det 'df' DataFrame å bli transformert. Deretter angir argumentet names_from kolonnenavnet som skal brukes for de nye variabelnavnene. Til slutt spesifiserer argumentet values_from kolonnenavnet som skal brukes for de nye verdiene.

Følgende utgang representerer transponeringen av den lange DataFrame til den brede DataFrame:

Konklusjon

Vi brukte ulike måter å transponere DataFrame i R. Det første eksemplet er satt med t() innebygd metode. Alle de andre eksemplene trengte pakkene for å importere slik at vi kunne bruke funksjonene deres til DataFrame-transponeringen. Den beste metoden å bruke avhenger imidlertid av den spesifikke situasjonen og datastrukturen du jobber med.