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
tidyrper transformar dades. - Practicar la combinació de funcions de
tidyridplyrper 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
tidyrgather(): 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_2019iany_2020en 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 columnaanycom a capçalera de les noves columnes ivalorcom 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 columnesnomicognomen 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_completen dues columnes:nomicognom, 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
keyha de serquarteri la columnavalueha 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
keyha de serquarteri la columnavalueha 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
