La reestructuració de dades és una habilitat essencial per a qualsevol analista de dades. En aquest tema, aprendrem com transformar i reorganitzar les dades en R per adaptar-les a les nostres necessitats d'anàlisi. Utilitzarem paquets com tidyr
i dplyr
per facilitar aquestes tasques.
Objectius del Tema
- Entendre els conceptes bàsics de la reestructuració de dades.
- Aprendre a utilitzar les funcions principals de
tidyr
per transformar dades. - Practicar la combinació de funcions de
tidyr
idplyr
per a una manipulació de dades més eficient.
Conceptes Bàsics
- Dades Amples vs. Dades Llargues
- Dades Amples: Cada variable té la seva pròpia columna.
- Dades Llargues: Cada fila és una observació única, i les variables es representen en dues columnes: una per al nom de la variable i una altra per al valor.
- Funcions Clau de
tidyr
tidyr
gather()
: Converteix dades amples en dades llargues.spread()
: Converteix dades llargues en dades amples.unite()
: Combina diverses columnes en una sola.separate()
: Divideix una columna en diverses columnes.
Exemples Pràctics
Exemple 1: Converteix Dades Amples en Dades Llargues amb gather()
# Instal·lem i carreguem el paquet tidyr install.packages("tidyr") library(tidyr) # Dades d'exemple dades_amples <- data.frame( id = 1:3, any_2019 = c(10, 20, 30), any_2020 = c(15, 25, 35) ) # Converteix a dades llargues dades_llargues <- gather(dades_amples, key = "any", value = "valor", any_2019:any_2020) print(dades_llargues)
Explicació:
gather(dades_amples, key = "any", value = "valor", any_2019:any_2020)
: Converteix les columnesany_2019
iany_2020
en dues columnes: una per al nom de la variable (any
) i una altra per al valor (valor
).
Exemple 2: Converteix Dades Llargues en Dades Amples amb spread()
# Dades d'exemple dades_llargues <- data.frame( id = c(1, 1, 2, 2, 3, 3), any = c("2019", "2020", "2019", "2020", "2019", "2020"), valor = c(10, 15, 20, 25, 30, 35) ) # Converteix a dades amples dades_amples <- spread(dades_llargues, key = "any", value = "valor") print(dades_amples)
Explicació:
spread(dades_llargues, key = "any", value = "valor")
: Converteix les dades llargues en dades amples, utilitzant la columnaany
com a capçalera de les noves columnes ivalor
com a valors d'aquestes columnes.
Exemple 3: Combina Columnes amb unite()
# Dades d'exemple dades <- data.frame( nom = c("Joan", "Maria"), cognom = c("Garcia", "Martínez"), edat = c(30, 25) ) # Combina les columnes nom i cognom dades_comb <- unite(dades, "nom_complet", nom, cognom, sep = " ") print(dades_comb)
Explicació:
unite(dades, "nom_complet", nom, cognom, sep = " ")
: Combina les columnesnom
icognom
en una nova columna anomenadanom_complet
, separant els valors amb un espai.
Exemple 4: Divideix Columnes amb separate()
# Dades d'exemple dades <- data.frame( nom_complet = c("Joan Garcia", "Maria Martínez"), edat = c(30, 25) ) # Divideix la columna nom_complet en nom i cognom dades_sep <- separate(dades, nom_complet, into = c("nom", "cognom"), sep = " ") print(dades_sep)
Explicació:
separate(dades, nom_complet, into = c("nom", "cognom"), sep = " ")
: Divideix la columnanom_complet
en dues columnes:nom
icognom
, utilitzant l'espai com a separador.
Exercicis Pràctics
Exercici 1: Converteix Dades Amples en Dades Llargues
Dades d'entrada:
dades_amples <- data.frame( id = 1:4, Q1 = c(5, 10, 15, 20), Q2 = c(6, 11, 16, 21), Q3 = c(7, 12, 17, 22), Q4 = c(8, 13, 18, 23) )
Instruccions:
- Converteix les dades amples en dades llargues utilitzant
gather()
. - La columna
key
ha de serquarter
i la columnavalue
ha de serscore
.
Solució:
dades_llargues <- gather(dades_amples, key = "quarter", value = "score", Q1:Q4) print(dades_llargues)
Exercici 2: Converteix Dades Llargues en Dades Amples
Dades d'entrada:
dades_llargues <- data.frame( id = c(1, 1, 2, 2, 3, 3, 4, 4), quarter = c("Q1", "Q2", "Q1", "Q2", "Q1", "Q2", "Q1", "Q2"), score = c(5, 6, 10, 11, 15, 16, 20, 21) )
Instruccions:
- Converteix les dades llargues en dades amples utilitzant
spread()
. - La columna
key
ha de serquarter
i la columnavalue
ha de serscore
.
Solució:
Resum
En aquesta secció, hem après a reestructurar dades utilitzant les funcions del paquet tidyr
. Hem vist com convertir dades amples en dades llargues i viceversa, així com combinar i dividir columnes. Aquestes habilitats són fonamentals per preparar les dades per a l'anàlisi i la visualització.
En el proper tema, explorarem com treballar amb grans conjunts de dades, una habilitat crucial per a l'anàlisi de dades a gran escala.
Programació en R: De Principiant a Avançat
Mòdul 1: Introducció a R
- Introducció a R i RStudio
- Sintaxi Bàsica de R
- Tipus de Dades i Estructures
- Operacions i Funcions Bàsiques
- Importació i Exportació de Dades
Mòdul 2: Manipulació de Dades
- Vectors i Llistes
- Matrius i Arrays
- Data Frames
- Factors
- Manipulació de Dades amb dplyr
- Manipulació de Cadenes
Mòdul 3: Visualització de Dades
- Introducció a la Visualització de Dades
- Gràfics Base de R
- Conceptes Bàsics de ggplot2
- ggplot2 Avançat
- Visualitzacions Interactives amb plotly
Mòdul 4: Anàlisi Estadística
- Estadístiques Descriptives
- Distribucions de Probabilitat
- Proves d'Hipòtesi
- Correlació i Regressió
- ANOVA i Proves de Chi-Cuadrat
Mòdul 5: Gestió Avançada de Dades
- Gestió de Dates i Hores
- Reestructuració de Dades
- Treballant amb Grans Conjunts de Dades
- Web Scraping
- APIs i JSON
Mòdul 6: Conceptes Avançats de Programació
- Escriure Funcions
- Depuració i Gestió d'Errors
- Programació Orientada a Objectes en R
- Programació Funcional
- Computació Paral·lela
Mòdul 7: Aprenentatge Automàtic amb R
- Introducció a l'Aprenentatge Automàtic
- Preprocessament de Dades
- Aprenentatge Supervisat
- Aprenentatge No Supervisat
- Avaluació i Ajust de Models
Mòdul 8: Temes Especialitzats
- Anàlisi de Sèries Temporals
- Anàlisi de Dades Espacials
- Mineria de Text i Processament del Llenguatge Natural
- Bioinformàtica amb R
- Anàlisi de Dades Financeres