From m@ech|er @end|ng |rom @t@t@m@th@ethz@ch  Thu Feb  8 15:15:22 2024
From: m@ech|er @end|ng |rom @t@t@m@th@ethz@ch (Martin Maechler)
Date: Thu, 8 Feb 2024 15:15:22 +0100
Subject: [Rd] round.Date and trunc.Date not working / implemented
In-Reply-To: <ab3376ac-5694-4a53-9606-c11bd97a4f0a@gmail.com>
References: <ab3376ac-5694-4a53-9606-c11bd97a4f0a@gmail.com>
Message-ID: <26052.57850.412172.408639@stat.math.ethz.ch>

>>>>> 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"
>



[Rd] round.Date and trunc.Date not working / implemented
Martin Maechler