[Rd] round.Date and trunc.Date not working / implemented
Olivier Benz
o||v|er@benz @end|ng |rom b-d@t@@ch
Thu Feb 8 15:36:50 CET 2024
> On 8 Feb 2024, at 15:15, Martin Maechler <maechler using stat.math.ethz.ch> wrote:
>
>>>>>> Jiří Moravec
>>>>>> on Wed, 7 Feb 2024 10:23:15 +1300 writes:
>
>> This is my first time working with dates, so if the answer is "Duh, work
>> with POSIXt", please ignore it.
>
>> Why is not `round.Date` and `trunc.Date` "implemented" for `Date`?
>
>> Is this because `Date` is (mostly) a virtual class setup for a better
>> inheritance or is that something that is just missing? (like
>> `sort.data.frame`). Would R core welcome a patch?
>
>> I decided to convert some dates to date using `as.Date` function, which
>> converts to a plain `Date` class, because that felt natural.
>
>> But then when trying to round to closest year, I have realized that the
>> `round` and `trunc` for `Date` do not behave as for `POSIXt`.
>
>> I would assume that these will have equivalent output:
>
>> Sys.time() |> round("years") # 2024-01-01 NZDT
>
>> Sys.Date() |> round("years") # Error in round.default(...): non-numeric
>> argument to mathematical function
>
>
>> Looking at the code (and reading the documentation more carefully) shows
>> the issue, but this looks like an omission that should be patched.
>
>> -- Jirka
>
> You are wrong: They *are* implemented,
> both even visible since they are in the 'base' package!
>
> ==> they have help pages you can read ....
>
> Here are examples:
>
>> trunc(Sys.Date())
> [1] "2024-02-08"
>> trunc(Sys.Date(), "month")
> [1] "2024-02-01"
>> trunc(Sys.Date(), "year")
> [1] "2024-01-01"
>>
>
Maybe he meant
r$> Sys.time() |> round.POSIXt("years")
[1] "2024-01-01 CET"
r$> Sys.Date() |> round.POSIXt("years")
[1] "2024-01-01 UTC"
The only difference is the timezone
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list