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

Gabor Grothendieck ggrothendieck at gmail.com
Mon Jul 18 15:48:00 CEST 2011


On Mon, Jul 18, 2011 at 8:56 AM, peter dalgaard <pdalgd at gmail.com> wrote:
>
> 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

Did you have zoo 1.7-1 loaded?  What happens when you try it?

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

zoo has its own as.Date.numeric method which accepts a superset of
inputs that base::as.Date.numeric accepts.

-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com



More information about the R-help mailing list