Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
Description
Conclusion: we will implement this in the R bindings - month will allow integer input: month(int) will return int as long as int is between 1 and 12.
==================================
In R, more specifically in lubridate, month() can be used both to get and set the corresponding component of a date. This means month() accepts integer inputs.
suppressPackageStartupMessages(library(lubridate)) month(1:12) #> [1] 1 2 3 4 5 6 7 8 9 10 11 12 month(1:13) #> Error in month.numeric(1:13): Values are not in 1:12
Solving this would allow us to implement bindings such as `semester()` in a manner closer to lubridate.
suppressPackageStartupMessages(library(dplyr)) suppressPackageStartupMessages(library(lubridate)) test_df <- tibble( month_as_int = c(1:12, NA), month_as_char_pad = ifelse(month_as_int < 10, paste0("0", month_as_int), month_as_int), dates = as.Date(paste0("2021-", month_as_char_pad, "-15")) ) test_df %>% mutate( sem_date = semester(dates), sem_month_as_int = semester(month_as_int)) #> # A tibble: 13 × 5 #> month_as_int month_as_char_pad dates sem_date sem_month_as_int #> <int> <chr> <date> <int> <int> #> 1 1 01 2021-01-15 1 1 #> 2 2 02 2021-02-15 1 1 #> 3 3 03 2021-03-15 1 1 #> 4 4 04 2021-04-15 1 1 #> 5 5 05 2021-05-15 1 1 #> 6 6 06 2021-06-15 1 1 #> 7 7 07 2021-07-15 2 2 #> 8 8 08 2021-08-15 2 2 #> 9 9 09 2021-09-15 2 2 #> 10 10 10 2021-10-15 2 2 #> 11 11 11 2021-11-15 2 2 #> 12 12 12 2021-12-15 2 2 #> 13 NA <NA> NA NA NA
Currently attempts to use month() with integer inputs errors with:
Function 'month' has no kernel matching input types (array[int32])
Attachments
Issue Links
- is depended upon by
-
ARROW-14815 [R] Implement bindings for lubridate::semester
- Resolved
- links to