[R] How to convert number (matlab) to date

peter dalgaard pdalgd at gmail.com
Mon Jul 18 14:56:14 CEST 2011


On Jul 18, 2011, at 14:08 , Gabor Grothendieck wrote:

> On Sat, Jul 16, 2011 at 11:50 PM, Eduardo M. A. M. Mendes
> <emammendes at gmail.com> wrote:
>> Hello
>> 
>> I am new to R and I need to convert some dates (numeric format by matlab) to actual dates in R.
>> 
>> For instance,
>> 
>> Matlab -> 730456 -> >> datestr(730456)
>> 
>> ans =
>> 
>> 02-Dec-1999
>> 
> 
> Set the origin to Matlab's origin like this.  Be sure you are using
> the indicated version of zoo or later:
> 
>> library(zoo)
>> packageVersion("zoo")
> [1] ‘1.7.1’
>> as.Date(730456, origin = "0000-00-00")
> [1] "1999-12-02"

Doesn't work on a Mac, and in general, I think it depends on a quirk in your OS's date conversion utilities. What does work for me is

> as.Date(730456-1, origin='0000-01-01')
[1] "1999-12-02"

but even this is dubious, since there is no year 0 AD. In Gregorian and Julian calendars, 1 BC continues directly into 1 AD. 

So, to be sure, try

> as.Date(730456-367, origin='0001-01-01')
[1] "1999-12-02"

(from which it transpires that the non-existing year 0 is a leap year...).

Or, or course, just use the appropriate "magic constant" of 719529 and begone with it:

> as.Date(730456-719529)
[1] "1999-12-02"


I fail to see what "zoo" has to do with this at all!


-- 
Peter Dalgaard
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list