Details

    • Sub-task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 8.0.0
    • R

    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

          Activity

            People

              dragosmg Dragoș Moldovan-Grünfeld
              dragosmg Dragoș Moldovan-Grünfeld
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 3h
                  3h