Hoe de DataFrame in R te transponeren

Hoe De Dataframe In R Te Transponeren



Het transponeren van een dataset is zo'n operatie die de data hervormt om te voldoen aan de specifieke vereisten van de analyse. Bij het transponeren van een dataset worden rijen en kolommen van de dataset omgekeerd, wat resulteert in een nieuwe dataset met verwisselde kolommen en rijen. R biedt enkele functies om een ​​dataset te transponeren. In dit artikel behandelen we de verschillende transponeringsmethoden voor DataFrames in R.

Voorbeeld 1: Transponeer het DataFrame met behulp van de T()-functie in R

De t() functie is een ingebouwde functie van R die wordt gebruikt om een ​​DataFrame te transponeren. Het converteert het DataFrame echter naar een matrix, zodat elke niet-numerieke kolom wordt omgezet in tekenreeksen. Overweeg het volgende R-script om het DataFrame te transponeren:







MyData = data.frame(c1 = c(1, 2, 3, 4, 5),

c2 = c(6, 7, 8, 9, 10),
c3 = c(11, 12, 13, 14, 15))

rij.namen(MyData) = c('r1','r2','r3','r4','r5')

t(MijnGegevens)

Hier declareren we de MyData-vector en wijzen we er data.frame() aan toe. We voegen de voorbeeldgegevens in die drie kolommen bevatten met de waarden binnen de data.frame() functie. Daarna gebruiken we de functie 'row.names()' en stellen we de rijnamen in voor de waarden van het 'MyData' DataFrame. Ten slotte transponeren we het 'MyData' DataFrame met behulp van de t() functie.



De volgende uitvoer toont de transpositie van het DataFrame waarbij de rijnamen van het originele DataFrame de kolomnamen worden van het getransponeerde DataFrame en de kolomnamen van het originele DataFrame verloren gaan bij de transpositie:







Voorbeeld 2: Transponeer het DataFrame met behulp van de functie Transpose() in R

De functie transpose() uit het pakket 'data.table' kan ook worden gebruikt om een ​​DataFrame te transponeren en retourneert een DataFrame. Daarom moeten we ervoor zorgen dat de 'data.table' is geïnstalleerd in R. Als deze niet wordt gevonden, kunnen we deze installeren met de volgende opdracht:

install.packages('data.table')

Nu kunnen we eenvoudig het pakket 'data.table' importeren om toegang te krijgen tot de functie transpose() in R om het DataFrame te transponeren. Beschouw de volgende R-code waarbij de functie transpose() wordt aangeroepen om het DataFrame te transponeren:



df <- data.frame(A = c(1:5),

B = c(6:10),
C = c(11:15))


rij.namen(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

df

Hier maken we het 'df' DataFrame met drie kolommen en vijf rijen, waarbij elke kolom een ​​reeks getallen bevat van respectievelijk 1 tot 5, 6 tot 10 en 11 tot 15. Bovendien wijzen we de DataFrame-rijnamen toe met behulp van de functie row.name() . Daarna printen we het originele DataFrame naar de console.

De originele DataFrame wordt hier op het scherm weergegeven:

Vervolgens transponeren we het originele 'df' DataFrame door de rijen en kolommen van het DataFrame om te wisselen.

bibliotheek(data.tabel)

df_trans <- transponeren(df)

rijnamen(df_trans) <- colnames(df)

colnames(df_trans) <- rijnamen(df)

df_trans

Hiervoor laden we eerst de 'data.table' -bibliotheek die de tools biedt om met de tabelgegevens in R te werken. Vervolgens wordt de transpose () -functie gebruikt uit de 'data.table' -bibliotheek. Het resulterende getransponeerde DataFrame wordt toegewezen aan een nieuwe variabele die 'df_t' is. Daarna wijzen we de kolomnamen van het oorspronkelijke 'df' DataFrame toe als rijnamen aan het getransponeerde 'df_trans' DataFrame met behulp van de functie rowname(). Vervolgens worden de rijnamen van het originele 'df' DataFrame toegewezen als kolomnamen aan het getransponeerde 'df_trans' DataFrame met behulp van de functie colnames().

Zo wordt de oorspronkelijke DataFrame-transpositie bereikt in de uitvoer. Het vertegenwoordigt elke cel in het getransponeerde DataFrame waarin het dezelfde waarde bevat als de overeenkomstige cel in het oorspronkelijke DataFrame, maar op een andere positie vanwege de transpositie.

Voorbeeld 3: Transponeer het DataFrame met behulp van de Tidyr Library Gather()-functie in R

Het opgeruimde pakket van R kan worden gebruikt om een ​​DataFrame te transponeren. Deze methode is handig wanneer we een DataFrame willen converteren van breed naar lang formaat en vervolgens terug naar breed formaat met verwisselde rijen en kolommen. Het biedt verschillende functies om de gegevens te transformeren en te reorganiseren. Hiervoor moeten we het netter-pakket specifiek downloaden met behulp van de volgende opdracht:

install.packages('tidyr')

Laten we de volgende R-code bekijken. We gebruiken de functie collect() van dit pakket om het brede DataFrame langer te transponeren:

bibliotheek(opruimer)

n = 10

opgeruimd_df = data.frame(

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

netjes_df

Hier wordt een 'brede' DataFrame omgezet in een 'lange' DataFrame met behulp van netter. Eerst maken we een 'tidy_df' DataFrame met drie kolommen. Elk van deze kolommen heeft 10 waarden.

Het lange DataFrame wordt weergegeven in het volgende uitvoerscherm:

Vervolgens geven we het dataframe 'tidy_df' door aan de functie collect() met de pipe-operator '%>%'. De functie collect() van properr wordt gebruikt om 'tidy_df' om te zetten in een lang DataFrame. De functie collect() neemt invoer met de naam 'Examens', die een nieuwe kolom aangeeft voor de variabelenamen die in de transformatie zijn gemaakt. 'Marks' specificeert de kolom die de 'Exam1_Marks' en 'Exam2_Marks' samen verzamelt.

lang <- proper_df %>%

verzamelen (examens, cijfers,
Exam1_Marks:Exam2_Marks)


lang

De uitvoer geeft het lange DataFrame weer aan de console die nu een 'lang' formaat heeft met drie kolommen:

Voorbeeld 4: Transponeer het DataFrame met behulp van de functie Pivot_Wider() in R

De volgende geavanceerde functie die we gebruiken om het DataFrame te transponeren, is de functie pivot_wider(). De pivot_wider() is een functie uit het opruimpakket in R waarmee we een 'lang' DataFrame kunnen transformeren in een 'breed' DataFrame. De functie heeft drie hoofdargumenten die worden besproken in de volgende code van R:

bibliotheek(opruimer)

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

Hier laden we eerst het netter-pakket met behulp van de bibliotheek()-functie. Vervolgens zetten we het voorbeeld DataFrame in 'df'. Het 'df' DataFrame heeft drie kolommen die overeenkomstig verschillende waarden bevatten. Het voorbeeld DataFrame is te zien in de volgende uitvoer:

Daarna wordt de functie pivot_wider() van properr gebruikt om 'df' om te zetten in 'df_wide'.

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

df_breed

De functie pivot_wider() neemt hier drie argumenten. Ten eerste is het 'df' DataFrame nodig om te worden getransformeerd. Vervolgens stelt het argument name_from de kolomnaam in die moet worden gebruikt voor de nieuwe variabelenamen. Ten slotte specificeert het argument waarden_van de kolomnaam die moet worden gebruikt voor de nieuwe waarden.

De volgende uitvoer vertegenwoordigt de omzetting van het lange DataFrame in het brede DataFrame:

Conclusie

We hebben verschillende manieren gebruikt om het DataFrame in R te transponeren. Het eerste voorbeeld is ingesteld met de ingebouwde methode t(). Alle andere voorbeelden hadden de pakketten nodig om te importeren, zodat we hun functies konden gebruiken voor de DataFrame-transpositie. De beste methode hangt echter af van de specifieke situatie en datastructuur waarmee u werkt.