[R] Compiling date

Charilaos Skiadas cskiadas at gmail.com
Wed Sep 10 15:17:22 CEST 2008


So, am I correct that each datum is either of the form "mm/dd/yy" or  
of the form "dd/mm/yyyy"? If that is correct, then the following  
should work, and takes care of converting 99 to 1999 instead of 2099:

dates <- c("06/15/07","04/09/99","20/03/2008")
short <- grep("\\d\\d/\\d\\d/\\d\\d$", dates, perl=TRUE)
dates[short] <- format(strptime(dates[short], format="%m/%d/%y"),  
format="%d/%m/%Y")

Or Henrique's suggestion, slightly modified:

strptime(dates, ifelse(nchar(dates) == 8, '%m/%d/%y', '%d/%m/%Y'))

Haris Skiadas
Department of Mathematics and Computer Science
Hanover College

On Sep 10, 2008, at 7:40 AM, Megh Dal wrote:

> It is a mixture of both. The data is so notorious excel cant format  
> properly. Therefore I thought whether R can do something otherwise  
> I have to do manually.
>
>
> --- On Tue, 9/9/08, Dr Eberhard W Lisse <el at lisse.na> wrote:
>
>> From: Dr Eberhard W Lisse <el at lisse.na>
>> Subject: Re: [R] Compiling date
>> To: "David Scott" <d.scott at auckland.ac.nz>
>> Cc: "Dr Eberhard W Lisse" <el at lisse.na>, "Megh Dal"  
>> <megh700004 at yahoo.com>, r-help at stat.math.ethz.ch
>> Date: Tuesday, September 9, 2008, 11:37 PM
>> Is this Month-Day or Day-Month or a mixture of both?
>>
>> I still think using the Format -> Cell -> Date will
>> work
>> much better...
>>
>> el
>>
>>
>> On 09 Sep 2008, at 11:21 , David Scott wrote:
>>
>>> On Mon, 8 Sep 2008, Megh Dal wrote:
>>>
>>>> Hi,
>>>>
>>>> I have following kind of dataset (all are dates)
>> in my Excel sheet.
>>>>
>>>> 09/08/08
>>>> 09/05/08
>>>> 09/04/08
>>>> 09/02/08
>>>> 09/01/08
>>>> 29/08/2008
>>>> 28/08/2008
>>>> 27/08/2008
>>>> 26/08/2008
>>>> 25/08/2008
>>>> 22/08/2008
>>>> 21/08/2008
>>>> 20/08/2008
>>>> 18/08/2008
>>>> 14/08/2008
>>>> 13/08/2008
>>>> 08/12/08
>>>> 08/11/08
>>>> 08/08/08
>>>> 08/07/08
>>>>
>>>> However I want to use R to compile those data to
>> make all dates in
>>>> same format. Can anyone please tell me any
>> automated way for doing
>>>> that?
>>>>
>>>
>>> Well you have to read them in as character first. Then
>> use sub to
>>> make the two digit years into four digits. The
>> following could
>>> probably be improved by a regular expression whiz, but
>> works:
>>>
>>>> strngs <-
>> c("06/05/08","23/11/2008")
>>>>
>> sub("([0-9][0-9]/[0-9][0-9]/)([0-9][0-9]$)","\\120\\2",strngs)
>>> [1] "06/05/2008" "23/11/2008"
>>>
>>>
>>> David Scott
>



More information about the R-help mailing list