From o||v|er@benz @end|ng |rom b-d@t@@ch  Thu Feb  8 15:36:50 2024
From: o||v|er@benz @end|ng |rom b-d@t@@ch (Olivier Benz)
Date: Thu, 8 Feb 2024 14:36:50 +0000
Subject: [Rd] round.Date and trunc.Date not working / implemented
In-Reply-To: <26052.57850.412172.408639@stat.math.ethz.ch>
References: <ab3376ac-5694-4a53-9606-c11bd97a4f0a@gmail.com>
 <26052.57850.412172.408639@stat.math.ethz.ch>
Message-ID: <BE1306E2-32F4-4AD1-ACE1-C91D503203E4@b-data.ch>

> On 8 Feb 2024, at 15:15, Martin Maechler <maechler at 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 at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel


[Rd] round.Date and trunc.Date not working / implemented
Olivier Benz