date_vec_yyyy_mm_dd <- c(
"2025-01-01",
"0000-00-00",
"2025-01-00",
"2025-00-01",
"2025-00-00",
"0000-00-00"
)
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
library(stringr)
library(purrr)
# if the date vector is in YMD format, then it will be NA if it contains 0
ymd(date_vec_yyyy_mm_dd)
#> Warning: 5 failed to parse.
#> [1] "2025-01-01" NA NA NA NA
#> [6] NA
map(date_vec_yyyy_mm_dd, \(x) unlist(str_split(x, pattern = "-")))
#> [[1]]
#> [1] "2025" "01" "01"
#>
#> [[2]]
#> [1] "0000" "00" "00"
#>
#> [[3]]
#> [1] "2025" "01" "00"
#>
#> [[4]]
#> [1] "2025" "00" "01"
#>
#> [[5]]
#> [1] "2025" "00" "00"
#>
#> [[6]]
#> [1] "0000" "00" "00"
# same as
map(date_vec_yyyy_mm_dd, \(x) str_split_1(x, pattern = "-"))
#> [[1]]
#> [1] "2025" "01" "01"
#>
#> [[2]]
#> [1] "0000" "00" "00"
#>
#> [[3]]
#> [1] "2025" "01" "00"
#>
#> [[4]]
#> [1] "2025" "00" "01"
#>
#> [[5]]
#> [1] "2025" "00" "00"
#>
#> [[6]]
#> [1] "0000" "00" "00"
map(date_vec_yyyy_mm_dd, \(x) min(as.numeric(str_split_1(x, pattern = "-"))))
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 0
#>
#> [[3]]
#> [1] 0
#>
#> [[4]]
#> [1] 0
#>
#> [[5]]
#> [1] 0
#>
#> [[6]]
#> [1] 0
map_int(date_vec_yyyy_mm_dd, \(x) min(as.numeric(str_split_1(x, pattern = "-"))))
#> [1] 1 0 0 0 0 0
min_date_val <- function(x) min(as.numeric(str_split_1(x, pattern = "-")))
map_int(date_vec_yyyy_mm_dd, \(x) min_date_val(x))
#> [1] 1 0 0 0 0 0
map_dbl(validate_separator, ~ min(as.numeric(unlist(str_split(.x,"-")))))
#> Error: object 'validate_separator' not foundCreated on 2025-07-09 with reprex v2.1.1
Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.5.1 (2025-06-13)
#> os macOS Sonoma 14.5
#> system aarch64, darwin20
#> ui X11
#> language (EN)
#> collate en_AU.UTF-8
#> ctype en_AU.UTF-8
#> tz Australia/Hobart
#> date 2025-07-09
#> pandoc 3.6.3 @ /Applications/Positron.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
#> quarto 1.7.31 @ /usr/local/bin/quarto
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date (UTC) lib source
#> cli 3.6.5 2025-04-23 [1] CRAN (R 4.5.0)
#> digest 0.6.37 2024-08-19 [1] CRAN (R 4.5.0)
#> evaluate 1.0.4 2025-06-18 [1] CRAN (R 4.5.0)
#> fastmap 1.2.0 2024-05-15 [1] CRAN (R 4.5.0)
#> fs 1.6.6 2025-04-12 [1] CRAN (R 4.5.0)
#> generics 0.1.4 2025-05-09 [1] CRAN (R 4.5.0)
#> glue 1.8.0 2024-09-30 [1] CRAN (R 4.5.0)
#> htmltools 0.5.8.1 2024-04-04 [1] CRAN (R 4.5.0)
#> knitr 1.50 2025-03-16 [1] CRAN (R 4.5.0)
#> lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.5.0)
#> lubridate * 1.9.4 2024-12-08 [1] CRAN (R 4.5.0)
#> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.5.0)
#> purrr * 1.0.4.9000 2025-05-04 [1] Github (tidyverse/purrr@9c8beb4)
#> reprex 2.1.1 2024-07-06 [1] CRAN (R 4.5.0)
#> rlang 1.1.6 2025-04-11 [1] CRAN (R 4.5.0)
#> rmarkdown 2.29 2024-11-04 [1] CRAN (R 4.5.0)
#> sessioninfo 1.2.3 2025-02-05 [1] CRAN (R 4.5.0)
#> stringi 1.8.7 2025-03-27 [1] CRAN (R 4.5.0)
#> stringr * 1.5.1 2023-11-14 [1] CRAN (R 4.5.0)
#> timechange 0.3.0 2024-01-18 [1] CRAN (R 4.5.0)
#> vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.5.0)
#> withr 3.0.2 2024-10-28 [1] CRAN (R 4.5.0)
#> xfun 0.52 2025-04-02 [1] CRAN (R 4.5.0)
#> yaml 2.3.10 2024-07-26 [1] CRAN (R 4.5.0)
#>
#> [1] /Users/nick_1/Library/R/arm64/4.5/library
#> [2] /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library
#> * ── Packages attached to the search path.
#>
#> ──────────────────────────────────────────────────────────────────────────────