¿Cómo podemos extraer la fecha a partir del nombre del partido de datos de FotMob?



Para extraer la fecha de la columna
matchName y convertirla a un formato de fecha utilizable, puedes seguir estos pasos usando la librería lubridate en R.


Ejemplo Completo en R

Aquí tienes el código completo para un ejemplo reproducible:

R
# Crear un dataframe de ejemplo
league <- tibble::tribble(
  ~matchId, ~matchName, ~home_id, ~home_name, ~home_score, ~away_id, ~away_name, ~away_score,
  4221753, "1. FC Köln-vs-TSG Hoffenheim_Sat, Sep 16, 2023, 13:30 UTC", 8722, "1. FC Köln", 1, 8226, "TSG Hoffenheim", 3,
  4221789, "1. FC Köln-vs-Borussia Mönchengladbach_Sun, Oct 22, 2023, 13:35 UTC", 8722, "1. FC Köln", 3, 9788, "Borussia Mönchengladbach", 1,
  4222378, "Augsburg-vs-VfB Stuttgart_Fri, May 10, 2024, 18:30 UTC", 8406, "Augsburg", 0, 10269, "VfB Stuttgart", 1,
  4221739, "Borussia Dortmund-vs-FC Heidenheim_Fri, Sep 1, 2023, 18:30 UTC", 9789, "Borussia Dortmund", 2, 94937, "FC Heidenheim", 2,
  4534588, "FC Heidenheim-vs-RB Leipzig_Sun, Oct 6, 2024, 13:30 UTC", 94937, "FC Heidenheim", 0, 178475, "RB Leipzig", 1
)

# Cargar las librerías necesarias
library(tidyverse)
library(lubridate)

# Procesar el dataframe
clean_league <- league |>
  tidyr::separate(matchName, c("match_name", "date"), "_") |>
  mutate(date = lubridate::parse_date_time(date, "amdYHM"))

# Ver el resultado
print(clean_league)

Cada paso en el código que utilizaste tiene un propósito específico para transformar tus datos. Aquí está la descripción del papel que juega cada uno:

Paso 1: tidyr::separate()

El primer paso utiliza la función separate() del paquete tidyr para dividir la columna matchName en dos nuevas columnas: match_name y date.

  • matchName: Es la columna original que contiene tanto el nombre del partido como la fecha.

  • c("match_name", "date"): Nombra las dos nuevas columnas que se crearán. La primera parte de la cadena original (1. FC Köln-vs-TSG Hoffenheim) irá a match_name, y la segunda parte (Sat, Sep 16, 2023, 13:30 UTC) irá a date.

  • "_": Este es el separador que le indica a la función dónde debe hacer la división. En tu caso, el guion bajo (_) es el carácter que separa el nombre del partido de la fecha.

En este punto, la columna date es todavía una cadena de texto (como "Sat, Sep 16, 2023, 13:30 UTC"), no un formato de fecha que se pueda analizar o usar para cálculos.


Paso 2: lubridate::parse_date_time()

El siguiente paso es la función parse_date_time() del paquete lubridate. Esta función es muy flexible y robusta para convertir cadenas de texto en objetos de fecha y hora.

  • date: Es la columna que acabas de crear y que contiene las cadenas de texto con las fechas.

  • "amdYHM": Este es el orden de los componentes de la fecha que le estás diciendo a lubridate que espere. Cada letra representa un componente:

    • a: Día de la semana (abreviado, como "Sat" o "Sun").

    • m: Mes (abreviado, como "Sep" o "Oct").

    • d: Día del mes (como "16" o "22").

    • Y: Año de 4 dígitos (como "2023").

    • H: Hora (formato de 24 horas, como "13").

    • M: Minuto (como "30" o "35").

Esta función es inteligente y puede manejar los espacios, comas y la palabra "UTC" automáticamente, lo que la hace ideal para tu caso.

Al finalizar, la columna date se convierte en un objeto de fecha y hora, listo para ser utilizado en cualquier análisis temporal, como agrupar datos por año.

Comentarios

Entradas más populares de este blog

¿Cómo comparar nombres de equipos de distintas fuentes?

¿Cómo hacemos filtrado y extracción de listas anidadas utilizando `purrr`?