[
https://issues.apache.org/jira/browse/ARROW-15701?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jonathan Keane resolved ARROW-15701.
------------------------------------
Fix Version/s: 8.0.0
Resolution: Fixed
Issue resolved by pull request 12482
[https://github.com/apache/arrow/pull/12482]
> [R] month() should allow integer inputs
> ---------------------------------------
>
> Key: ARROW-15701
> URL: https://issues.apache.org/jira/browse/ARROW-15701
> Project: Apache Arrow
> Issue Type: Sub-task
> Components: R
> Reporter: Dragoș Moldovan-Grünfeld
> Assignee: Dragoș Moldovan-Grünfeld
> Priority: Major
> Labels: pull-request-available
> Fix For: 8.0.0
>
> Time Spent: 2h
> Remaining Estimate: 0h
>
> *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.
> {code:r}
> 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
> {code}
> Solving this would allow us to implement bindings such as `semester()` in a
> manner closer to {{{}lubridate{}}}.
> {code:r}
> 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
> {code}
> Currently attempts to use {{month()}} with integer inputs errors with:
> {code:r}
> Function 'month' has no kernel matching input types (array[int32])
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)