Skip to content

Instantly share code, notes, and snippets.

@njtierney
Last active July 9, 2025 00:57
Show Gist options
  • Select an option

  • Save njtierney/1f68b4bacb093961219f30a6f925defe to your computer and use it in GitHub Desktop.

Select an option

Save njtierney/1f68b4bacb093961219f30a6f925defe to your computer and use it in GitHub Desktop.
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 found

Created 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.
#> 
#> ──────────────────────────────────────────────────────────────────────────────
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment