# [R] Rounding in date.mdy from library(date)

BXC (Bendix Carstensen) BXC at novo.dk
Mon Jan 3 10:08:34 CET 2000

```The date library contains a function date.mdy that converts a number
D to the date (month,date,year as a list) at D days after 1 Jan 1960.
This a convention that fits in with SASs.

The logic would be that the result was the date at D days after
1 Jan 1960 00:00:00 (which is a POINT in time as opposed to a date which
is an interval), so that any D with 2<=D<3 was rounded to 3 Jan 1960
and so on. This is because at any time D days (i.e. D*24h) after
1.1.1960:00:00 with 2<=D<3 we would call the date "3 Jan 1960".

I cannot decipher the algorithm from the code in the function, but the
rounding procedure certainly produces some funny results, as the following
piece of clumsy code demonstrates:

dex <- function(jul.dat,N=1000)
{
# Functions that finds the fraction to add to a number
# to make the date.mdy round upwards (should be 1)
(0:N)[(abs(diff(date.mdy(jul.dat+0:N/N)\$day))>0.5)]/N
}
jd <- 0:200 * 300
rf <- 0
for (i in 1:201) rf[i] <- dex(jd[i])
plot(jd,rf,pch=".")

The obvous workaround would be to mask date.mdy by:

real.date.mdy <- function(jd) date.mdy(floor(jd))

Is this an error or is there a feature somewhere that I am missing?

Bendix Carstensen

\\\|///
\\ - - /
(  @ @ )
+------------------o00o-(_)-o00o-------------------------+
| Bendix Carstensen                 tel: +45 44 43 87 38 |
| Senior Statistician               SDC: +45 44 43 90 42 |
| Steno Diabetes Center             fax: +45 44 43 73 13 |
| Niels Steensens Vej 2              e-mail: bxc at novo.dk |
| DK - 2820 Gentofte       http://www.biostat.ku.dk/~bxc |
| Denmark                   Ooooo                        |
+------------------ooooO----(   )------------------------+
(   )     ) /
\ (     (_/
\_)

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```