Programma
Trasporre le matrici è un’operazione fondamentale di manipolazione dei dati nell’ambiente di programmazione R. In questo tutorial, ti guiderò su come trasporre in modo efficace le matrici in R, mostrando diversi metodi per farlo. Iniziamo!
La risposta rapida: come trasporre una matrice in R
Se hai fretta, il modo più veloce per trasporre una matrice in R è usare la funzione t(). La funzione t() fa parte di R base e offre un modo immediato per trasporre una matrice. Ecco un semplice esempio:
# 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
Che cos’è la trasposizione?
Trasporre una matrice significa scambiare righe e colonne, trasformando i dati delle righe in dati delle colonne e viceversa. Questa operazione è comunemente usata nella manipolazione dei dati per ristrutturare i dataset, rendendoli più adatti ad analisi o visualizzazioni specifiche. Per esempio, considera una matrice che contiene le temperature giornaliere di diverse città. Trasporre questo data frame invertirebbe le righe (giorni) con le colonne (città), semplificando potenzialmente operazioni successive come il plotting o l’analisi statistica.
|
Giorno |
New York |
Lost Angeles |
Chicago |
|
Giorno 1 |
22 |
25 |
18 |
|
Giorno 2 |
20 |
28 |
21 |
Un dataset meteorologico di esempio per 3 città prima della trasposizione
|
Città |
Giorno 1 |
Giorno 2 |
|
New York |
22 |
20 |
|
Los Angeles |
25 |
28 |
|
Chicago |
18 |
21 |
Un dataset meteorologico di esempio per 3 città dopo la trasposizione
Tre metodi per trasporre una matrice in R
Dato la nostra matrice di temperature giornaliere per diverse città, vediamo come trasporla usando vari metodi in R.
Metodo n. 1: come trasporre una matrice in R usando R base
Il metodo più semplice per trasporre una matrice in R è usare la funzione t() di R base, come mostrato in precedenza. È efficiente e diretto, ed è l’opzione ideale per trasporre velocemente matrici senza pacchetti aggiuntivi.
# 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
Metodo n. 2: trasporre una matrice in R usando il tidyverse
Il tidyverse è un insieme potente di strumenti in R che rende il lavoro con i dati efficiente e coerente. Anche se il tidyverse è in genere usato con i data frame, puoi convertire una matrice in un data frame e poi usare tidyr per "trasporla" tramite pivot. Questo è particolarmente utile se stai già usando il tidyverse per analizzare i dati.
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
Metodo n. 3: trasporre una matrice in R usando data.table
In modo simile all’approccio con il tidyverse, data.table può lavorare con data frame o data table. Ecco come potresti trasporre una matrice convertendola prima in una 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
Considerazioni finali
Trasporre le matrici è una competenza fondamentale nella programmazione R. Che tu lavori con R base, con tidyr all’interno del tidyverse, o con il pacchetto data.table, R offre opzioni flessibili per adattarsi alle tue esigenze di dati. Se vuoi approfondire, dai un'occhiata alla nostra cheat sheet Reshaping Data with tidyr in R o, meglio ancora, inizia con il percorso di competenze Data Manipulation in R.
Adel è un formatore e speaker in Data Science, nonché VP dei Media presso DataCamp. Adel ha pubblicato diversi corsi e sessioni di formazione live su analisi dei dati, machine learning e data engineering. È appassionato di diffondere competenze e alfabetizzazione sui dati all'interno delle organizzazioni e di esplorare l'intersezione tra tecnologia e società. Ha un MSc in Data Science and Business Analytics. Nel tempo libero, lo trovi spesso in compagnia del suo gatto Louis.


