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 i dplyr per a una manipulació de dades més eficient.

Conceptes Bàsics

  1. 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.

  1. Funcions Clau de 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 columnes any_2019 i any_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 columna any com a capçalera de les noves columnes i valor 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 columnes nom i cognom en una nova columna anomenada nom_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 columna nom_complet en dues columnes: nom i cognom, 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:

  1. Converteix les dades amples en dades llargues utilitzant gather().
  2. La columna key ha de ser quarter i la columna value ha de ser score.

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:

  1. Converteix les dades llargues en dades amples utilitzant spread().
  2. La columna key ha de ser quarter i la columna value ha de ser score.

Solució:

dades_amples <- spread(dades_llargues, key = "quarter", value = "score")
print(dades_amples)

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

Mòdul 2: Manipulació de Dades

Mòdul 3: Visualització de Dades

Mòdul 4: Anàlisi Estadística

Mòdul 5: Gestió Avançada de Dades

Mòdul 6: Conceptes Avançats de Programació

Mòdul 7: Aprenentatge Automàtic amb R

Mòdul 8: Temes Especialitzats

Mòdul 9: Projecte i Estudis de Cas

© Copyright 2024. Tots els drets reservats