Ga naar hoofdinhoud

Een matrix transponeren in R: een snelle tutorial

Leer in deze korte tutorial drie methoden om een matrix in R te transponeren

Verken met AI

Matrices transponeren is een basistaak voor datamanipulatie in de R-programmeeromgeving. In deze tutorial laat ik je zien hoe je matrices in R effectief kunt transponeren, met verschillende methoden om dit te doen. Laten we beginnen!

Het snelle antwoord: een matrix transponeren in R

Heb je weinig tijd? De snelste manier om een matrix in R te transponeren is met de functie t(). De functie t() is onderdeel van base R en biedt een directe manier om een matrix te transponeren. Hier is een simpel voorbeeld:

# Creating a sample matrix
my_matrix <- matrix(1:6, nrow = 2, ncol = 3)
print(my_matrix)
      [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
# Transposing the matrix
transposed_matrix <- t(my_matrix)
print(transposed_matrix)
      [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6

Wat is transponeren?

Een matrix transponeren betekent de rijen en kolommen omdraaien: rijen worden kolommen en omgekeerd. Deze bewerking wordt vaak gebruikt bij datamanipulatie om datasets te herstructureren, zodat ze beter geschikt zijn voor specifieke analyses of visualisaties. Stel bijvoorbeeld een matrix voor met dagelijkse temperaturen voor verschillende steden. Door deze data te transponeren, wissel je de rijen (dagen) met de kolommen (steden), wat vervolgwerkingen zoals plotten of statistische analyse kan vereenvoudigen.

Dag

New York

Lost Angeles

Chicago

Dag 1

22

25

18

Dag 2

20

28

21

Een voorbeeld van een weerdataset voor 3 steden vóór het transponeren

Stad

Dag 1

Dag 2

New York

22

20

Los Angeles

25

28

Chicago

18

21

Een voorbeeld van een weerdataset voor 3 steden ná het transponeren

Drie methoden om een matrix in R te transponeren

Met onze matrix met dagelijkse temperaturen voor verschillende steden gaan we kijken hoe je deze matrix kunt transponeren met diverse methoden in R.

Methode #1: een matrix transponeren in R met base R

De meest directe manier om een matrix in R te transponeren is met de base R-functie t(), zoals eerder getoond. Het is efficiënt en rechttoe rechtaan, en een logische keuze als je snel wilt transponeren zonder extra packages.

# Assume that temparature_matrix is already predefined
print(temperature_matrix)
      New_York Los_Angeles Chicago
Day 1       22          20      25
Day 2       28          18      21
# Transpose temperature_matrix
transposed_matrix <- t(temperature_matrix)

print(transposed_matrix)
            Day 1 Day 2
New_York      22    28
Los_Angeles   20    18
Chicago       25    21

Methode #2: een matrix transponeren in R met de tidyverse

De tidyverse is een krachtige set tools in R die werken met data efficiënt en consistent maakt. Hoewel de tidyverse meestal wordt gebruikt met data frames, kun je een matrix omzetten naar een data frame en vervolgens tidyr gebruiken om deze te "transponeren" via pivots. Dit is vooral handig als je de tidyverse toch al gebruikt voor je analyses.

library(tidyr)
library(dplyr)
library(tibble)

# Converting the matrix to a data frame for tidyverse manipulation
temperature_df <- as.data.frame(temperature_matrix)

# "Transposing" the matrix by converting to long then wide format
transposed_df <- temperature_df %>%
  rownames_to_column(var = "Day") %>%
  pivot_longer(-Day, names_to = "City", values_to = "Temperature") %>%
  pivot_wider(names_from = City, values_from = Temperature)

print(transposed_df)
# A tibble: 2 × 4
  Day   New_York Los_Angeles Chicago
  <chr>    <dbl>       <dbl>   <dbl>
1 Day 1       22          20      25
2 Day 2       28          18      21

Methode #3: een matrix transponeren in R met data.table

Net als bij de tidyverse-aanpak kan data.table werken met data frames of data tables. Zo kun je een matrix transponeren door deze eerst om te zetten naar een data table:

library(data.table)

# Converting the matrix to a data.table
temperature_dt <- as.data.table(temperature_matrix, keep.rownames = "Day")

# Transposing the matrix by melting and dcasting (similar to pivot_longer and pivot_wider)
transposed_dt <- melt(temperature_dt, id.vars = "Day") %>%
  dcast(variable ~ Day, value.var = "value")

print(transposed_dt)
      variable Day 1 Day 2
1:    New_York    22    28
2: Los_Angeles    20    18
3:     Chicago    25    21

Tot slot

Matrices transponeren is een fundamentele vaardigheid in R-programmeren. Of je nu met base R werkt, met tidyr binnen de tidyverse of met het data.table-pakket, R biedt flexibele opties die passen bij jouw databehoeften. Wil je meer leren? Bekijk dan onze Cheat Sheet Reshaping Data with tidyr in R, of beter nog: ga aan de slag met de Skill Track Data Manipulation in R.

Adel Nehme

Auteur

Adel Nehme

Adel is docent Data Science, spreker en VP Media bij DataCamp. Adel heeft diverse cursussen en live trainingen uitgebracht over data-analyse, machine learning en data engineering. Hij is gepassioneerd over het verspreiden van datavaardigheden en data-geletterdheid binnen organisaties en de wisselwerking tussen technologie en de samenleving. Hij heeft een MSc in Data Science and Business Analytics. In zijn vrije tijd vind je hem vaak met zijn kat Louis.

Onderwerpen

Gerelateerd