I have a problem with some functions handling dates, in packages 'date'
and
'survival' (they seem to be identical). For instance, from the
documentation,
--------------------
mdy.date {survival}
R Documentation
Convert to Julian Dates
Description
Given a month, day, and year, returns the number of days since January 1, 1960.
Usage
mdy.date(month, day, year, nineteen = TRUE, fillday = FALSE,
fillmonth = FALSE)
----------------------------
but
> library(survival)
> mdy.date(12, 1, 1977)
[1] 1Dec77
Similar strange results appear in other date-related functions. I plan to
write functions that converts, eg, "1977-01-31" to the real number
1977.084
and back. What function in R does what 'mdy.date' claims to do?
I'm on
platform i686-pc-linux-gnu
arch i686
os linux-gnu
system i686, linux-gnu
status
major 2
minor 1.1
year 2005
month 06
day 20
language R
--
G??ran Brostr??m tel: +46 90 786 5223
Department of Statistics fax: +46 90 786 6614
Ume?? University http://www.stat.umu.se/~goran.brostrom/
SE-90187 Ume??, Sweden e-mail: gb at stat.umu.se
G??ran Brostr??m <gb at stat.umu.se> writes:> I have a problem with some functions handling dates, in packages 'date' and > 'survival' (they seem to be identical). For instance, from the documentation, > > -------------------- > mdy.date {survival} > > R Documentation > > Convert to Julian Dates > > Description > > Given a month, day, and year, returns the number of days since January 1, 1960. > Usage > > mdy.date(month, day, year, nineteen = TRUE, fillday = FALSE, > fillmonth = FALSE) > ---------------------------- > but > > > library(survival) > > mdy.date(12, 1, 1977) > [1] 1Dec77 > > Similar strange results appear in other date-related functions. I plan to > write functions that converts, eg, "1977-01-31" to the real number 1977.084 > and back. What function in R does what 'mdy.date' claims to do?mdy.date does ...> dput(mdy.date(12, 1, 1977))structure(6544, class = "date")> mdy.date(1, 31, 1977)/365.2425+1960 # or /365.25 if you really want 1977.084[1] 1977.085 But with recent R's, as.Date is a better bet:> c(as.Date("1977-01-31") - as.Date("0000-01-01"))/365.2425[1] 1977.084 (notice that you need the c() to avoid the nonsense of> (as.Date("1977-01-31") - as.Date("0000-01-01"))/365.2425Time difference of 1977.084 days ) -- O__ ---- Peter Dalgaard ??ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
On Fri, 19 Aug 2005, [iso-8859-1] Göran Broström wrote:> > Similar strange results appear in other date-related functions. I plan to > write functions that converts, eg, "1977-01-31" to the real number 1977.084 > and back. What function in R does what 'mdy.date' claims to do? >Well, mdy.date does (the result *prints* as a date, but works in numerical operations). Eg> 1970+ mdy.date(12,1,1977)/365.25[1] 1987.916 -thomas