Skip to content
This repository was archived by the owner on Sep 18, 2025. It is now read-only.

Commit 0930292

Browse files
authored
Merge pull request #448 from JaseZiv/tm-dates
address tm dates issue, including #445
2 parents 4bbc357 + 2271069 commit 0930292

93 files changed

Lines changed: 202 additions & 824 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Type: Package
22
Package: worldfootballR
33
Title: Extract and Clean World Football (Soccer) Data
4-
Version: 0.6.8
4+
Version: 0.6.8.0001
55
Authors@R: c(
66
person("Jason", "Zivkovic", , "jaseziv83@gmail.com", role = c("aut", "cre", "cph")),
77
person("Tony", "ElHabr", , "anthonyelhabr@gmail.com", role = "ctb"),

NEWS.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# worldfootballR (development version)
22

3+
### Improvements
4+
5+
* Internal function `.tm_fix_dates` Now handles parsing even more date formats, including "30.08.2029" and "2029.08.30" (0.6.8.0001) ([#445](https://github.com/JaseZiv/worldfootballR/issues/445))
6+
* Address issues with dates for `player_dob` in the output of `tm_player_market_values()` and `tm_each_team_player_market_val()` (0.6.8.0001)
7+
8+
9+
***
10+
11+
# worldfootballR 0.6.8
12+
313
### New Functions
414

515
* `tm_each_team_player_market_val()` created to allow users to get player market values per team [#432](https://github.com/JaseZiv/worldfootballR/issues/432)

R/internals.R

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -357,24 +357,43 @@
357357
#' @noRd
358358
#'
359359
.tm_fix_dates <- function(dirty_dates) {
360-
360+
361361
fix_date <- function(dirty_date) {
362362
if(is.na(dirty_date)) {
363363
clean_date <- NA_character_
364+
} else if (grepl("\\.", dirty_date)) {
365+
366+
first_part <- sub("\\..*", "", dirty_date)
367+
368+
# Count digits
369+
n <- nchar(first_part)
370+
371+
if (n == 4) {
372+
# Do something if 4 digits
373+
tryCatch({clean_date <- lubridate::ymd(dirty_date) %>% as.character()}, error = function(e) {clean_date <- NA_character_})
374+
} else if (n == 2) {
375+
# Do something else if 2 digits
376+
tryCatch({clean_date <- lubridate::dmy(dirty_date) %>% as.character()}, error = function(e) {clean_date <- NA_character_})
377+
} else {
378+
# Fallback
379+
clean_date <- NA_character_
380+
}
381+
382+
364383
} else {
365384
split_string <- strsplit(dirty_date, split = " ") %>% unlist() %>% gsub(",", "", .)
366385
if(length(split_string) != 3) {
367386
clean_date <- NA_character_
368387
} else {
369388
tryCatch({clean_date <- lubridate::ymd(paste(split_string[3], split_string[1], split_string[2], sep = "-")) %>%
370-
as.character()}, error = function(e) {country_name <- NA_character_})
389+
as.character()}, error = function(e) {clean_date <- NA_character_})
371390
}
372391
}
373-
392+
374393
return(clean_date)
375394
}
376395
clean_dates <- dirty_dates %>% purrr::map_chr(fix_date)
377-
396+
378397
return(clean_dates)
379398
}
380399

R/player_market_values.R

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,10 @@ tm_each_team_player_market_val <- function(each_team_url, time_pause = 15) {
151151
dplyr::mutate(player_market_value_euro = mapply(.convert_value_to_numeric, player_market_value)) %>%
152152
dplyr::mutate(date_joined = .tm_fix_dates(.data[["date_joined"]]),
153153
contract_expiry = .tm_fix_dates(.data[["contract_expiry"]])) %>%
154-
tidyr::separate(., player_birthday, into = c("Month", "Day", "Year"), sep = " ", remove = F) %>% suppressWarnings() |>
154+
tidyr::separate(., player_birthday, into = c("Month", "Day", "Year"), sep = "\\.", remove = F) %>% suppressWarnings() |>
155155
dplyr::mutate(player_age = gsub(".*\\(", "", .data[["player_birthday"]]) %>% gsub("\\)", "", .),
156-
Day = gsub(",", "", .data[["Day"]]) %>% as.numeric(),
157-
Year = as.numeric(gsub("\\(.*", "", .data[["Year"]])),
158-
Month = match(.data[["Month"]], month.abb),
159-
player_dob = suppressWarnings(lubridate::ymd(paste(.data[["Year"]], .data[["Month"]], .data[["Day"]], sep = "-")))) %>%
156+
player_birthday = gsub("\\s*\\([^)]*\\)", "", .data[["player_birthday"]]),
157+
player_dob = suppressWarnings(lubridate::dmy(.data[["player_birthday"]]))) %>%
160158
dplyr::mutate(player_age = as.numeric(gsub("\\D", "", .data[["player_age"]]))) %>%
161159
dplyr::select(.data[["comp_name"]], .data[["country"]], .data[["season_start_year"]], .data[["squad"]], .data[["player_num"]], .data[["player_name"]], .data[["player_position"]], .data[["player_dob"]], .data[["player_age"]], .data[["player_nationality"]], .data[["current_club"]],
162160
.data[["player_height_mtrs"]], .data[["player_foot"]], .data[["date_joined"]], .data[["joined_from"]], .data[["contract_expiry"]], .data[["player_market_value_euro"]], .data[["player_url"]])
@@ -397,10 +395,8 @@ tm_player_market_values <- function(country_name, start_year, league_url = NA) {
397395
contract_expiry = .tm_fix_dates(.data[["contract_expiry"]])) %>%
398396
tidyr::separate(., player_birthday, into = c("Month", "Day", "Year"), sep = " ", remove = F) %>%
399397
dplyr::mutate(player_age = gsub(".*\\(", "", .data[["player_birthday"]]) %>% gsub("\\)", "", .),
400-
Day = gsub(",", "", .data[["Day"]]) %>% as.numeric(),
401-
Year = as.numeric(gsub("\\(.*", "", .data[["Year"]])),
402-
Month = match(.data[["Month"]], month.abb),
403-
player_dob = suppressWarnings(lubridate::ymd(paste(.data[["Year"]], .data[["Month"]], .data[["Day"]], sep = "-")))) %>%
398+
player_birthday = gsub("\\s*\\([^)]*\\)", "", .data[["player_birthday"]]),
399+
player_dob = suppressWarnings(lubridate::dmy(.data[["player_birthday"]]))) %>%
404400
dplyr::mutate(player_age = as.numeric(gsub("\\D", "", .data[["player_age"]]))) %>%
405401
dplyr::select(.data[["comp_name"]], .data[["region"]], .data[["country"]], .data[["season_start_year"]], .data[["squad"]], .data[["player_num"]], .data[["player_name"]], .data[["player_position"]], .data[["player_dob"]], .data[["player_age"]], .data[["player_nationality"]], .data[["current_club"]],
406402
.data[["player_height_mtrs"]], .data[["player_foot"]], .data[["date_joined"]], .data[["joined_from"]], .data[["contract_expiry"]], .data[["player_market_value_euro"]], .data[["player_url"]])

docs/404.html

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/CONTRIBUTING.html

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/ISSUE_TEMPLATE.html

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/articles/extract-fbref-data.html

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/articles/extract-transfermarkt-data.html

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/articles/extract-understat-data.html

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)