Sådan transponeres DataFrame i R

Sadan Transponeres Dataframe I R



Transponering af et datasæt er en sådan operation, der reformerer dataene for at opfylde de særlige krav til analysen. Transponering af et datasæt involverer inverterede rækker og kolonner i datasættet, hvilket resulterer i et nyt datasæt med skiftede kolonner og rækker. R giver nogle funktioner til at transponere et datasæt. I denne artikel vil vi dække de forskellige transponeringsmetoder for DataFrames i R.

Eksempel 1: Transponer DataFrame ved hjælp af T()-funktionen i R

Funktionen t() er en indbygget funktion af R, som bruges til at transponere en DataFrame. Det konverterer imidlertid DataFrame til en matrix, så enhver ikke-numerisk kolonne omdannes til tegnstrenge. Overvej følgende R-script til at 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 indsætter eksempeldataene, som indeholder tre kolonner med værdierne i data.frame()-funktionen. Derefter bruger vi funktionen 'row.names()' og indstiller rækkenavnene for værdierne af 'MyData' DataFrame. Til sidst transponerer vi 'MyData' DataFrame ved hjælp af t()-funktionen.



Følgende output viser transponeringen af ​​DataFrame, hvor rækkenavnene på den originale DataFrame bliver kolonnenavnene på den transponerede DataFrame, og kolonnenavnene på den originale DataFrame går tabt i transponeringen:







Eksempel 2: Transponer DataFrame ved hjælp af Transpose()-funktionen i R

Transpose()-funktionen fra 'data.table'-pakken kan også bruges til at transponere en DataFrame, og den returnerer en DataFrame. Derfor skal vi sørge for, at 'data.table' er installeret i R. Hvis den ikke findes, kan vi installere den med følgende kommando:

install.packages('data.table')

Nu kan vi nemt importere 'data.table'-pakken for at få adgang til transpose()-funktionen i R for at transponere DataFrame. Overvej følgende R-kode, hvor funktionen transpose() kaldes for at 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 opretter vi 'df' DataFrame med tre kolonner og fem rækker, hvor hver kolonne indeholder en række tal fra henholdsvis 1 til 5, 6 til 10 og 11 til 15. Derudover tildeler vi DataFrame rækkenavne ved hjælp af funktionen row.names(). Derefter udskriver vi den originale DataFrame til konsollen.

Den originale DataFrame vises på skærmen her:

Dernæst transponerer vi den originale 'df' DataFrame ved at skifte rækker og kolonner i DataFrame.

bibliotek(data.table)

df_trans <- transponere(df)

rækkenavne(df_trans) <- colnames(df)

colnames(df_trans) <- rækkenavne(df)

df_trans

Til dette indlæser vi først 'data.table'-biblioteket, som giver værktøjerne til at arbejde med tabeldataene i R. Derefter bruges transpose()-funktionen fra 'data.table'-biblioteket. Den resulterende transponerede DataFrame tildeles en ny variabel, som er 'df_t'. Derefter tildeler vi kolonnenavnene på den originale 'df' DataFrame som rækkenavne til den transponerede 'df_trans' DataFrame ved hjælp af rownames()-funktionen. Derefter tildeles rækkenavnene på den originale 'df' DataFrame som kolonnenavne til den transponerede 'df_trans' DataFrame ved hjælp af colnames()-funktionen.

Således opnås den originale DataFrame-transponering i outputtet. Den repræsenterer hver celle i den transponerede DataFrame, hvor den indeholder den samme værdi som den tilsvarende celle i den originale DataFrame, men i en anden position på grund af transpositionen.

Eksempel 3: Transponer DataFrame ved hjælp af Tidyr Library Gather()-funktionen i R

Tidyr-pakken af ​​R kan bruges til at transponere en DataFrame. Denne metode er nyttig, når vi vil konvertere en DataFrame fra bredt til langt format og derefter tilbage til bredt format med ombyttede rækker og kolonner. Det giver flere funktioner til at transformere og omorganisere dataene. Før dette skal vi downloade tidyr-pakken specifikt ved hjælp af følgende kommando:

install.packages('tidyr')

Lad os overveje følgende R-kode. Vi bruger samle()-funktionen i denne pakke til at transponere den brede DataFrame længere:

bibliotek (tidyr)

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),
Eksamen3_mærker = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))

tidy_df

Her konverteres en 'bred' DataFrame til en 'lang' DataFrame ved hjælp af tidyr. Først opretter vi en 'tidy_df' DataFrame med tre kolonner. Hver af disse kolonner har 10 værdier.

Den lange DataFrame vises på følgende outputskærm:

Derefter sender vi 'tidy_df' DataFrame til funktionen gather() med røroperatoren '%>%'. gather()-funktionen fra tidyr bruges til at transformere 'tidy_df' til en lang DataFrame. gather()-funktionen tager input med navnet 'Eksamenser', som angiver en ny kolonne til at indeholde de variabelnavne, der oprettes i transformationen. 'Mærker' angiver kolonnen, der samler 'Eksamen1_mærker' og 'Eksamen2_mærker' sammen.

lang <- tidy_df %>%

samle (eksamener, karakterer,
Eksamen1_mærker:Eksamen2_mærker)


lang

Outputtet viser den lange DataFrame til konsollen, som nu har et 'langt' format med tre kolonner:

Eksempel 4: Transponer DataFrame ved hjælp af Pivot_Wider()-funktionen i R

Den næste avancerede funktion, som vi bruger til at transponere DataFrame, er pivot_wider()-funktionen. Pivot_wider() er en funktion fra tidyr-pakken i R, som giver os mulighed for at transformere en 'lang' DataFrame til en 'bred' DataFrame. Funktionen tager tre hovedargumenter, som diskuteres i følgende kode af R:

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 indlæser vi først tidyr-pakken ved hjælp af library()-funktionen. Derefter indstiller vi prøvedataframen i 'df'. 'df' DataFrame har tre kolonner, der indeholder forskellige værdier, i overensstemmelse hermed. Eksempel på DataFrame kan ses i følgende output:

Derefter bruges funktionen pivot_wider() fra tidyr til at transformere 'df' til 'df_wide'.

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

df_wide

Funktionen pivot_wider() tager tre argumenter her. For det første tager det 'df' DataFrame at blive transformeret. Derefter sætter argumentet names_from kolonnenavnet, der skal bruges til de nye variabelnavne. Til sidst angiver argumentet values_from kolonnenavnet, der skal bruges til de nye værdier.

Følgende output repræsenterer transponeringen af ​​den lange DataFrame til den brede DataFrame:

Konklusion

Vi brugte forskellige måder at transponere DataFrame i R. Det første eksempel er sat med den indbyggede t() metode. Alle de andre eksempler havde brug for, at pakkerne skulle importeres, så vi kunne bruge deres funktioner til DataFrame-transponeringen. Den bedste metode at bruge afhænger dog af den specifikke situation og datastruktur, du arbejder med.