[R] determine the year of a date

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Wed Feb 3 21:43:36 CET 2016


Not exactly.

If you have been "Excel"ed and have both formats in one column then you 
really have a data cleanup task to do. The best route to resolution is to 
fix the source of the data (e.g. go back into Excel and reformat the 
column with consistent formatting).

If you need to do this on an ongoing basis and cannot fix the data source, 
then you might need to choose the correct format on the fly... something 
like:

yYdates <- function( ds ) {
   fmt <- ifelse( grepl( "^\\d{1,2}/\\d{1,2}/\\d{2}$", ds )
                , "%m/%d/%y"
                , "%m/%d/%Y"
                )
   as.Date( ds, format=fmt )
}

yYdates( c( "02/18/2015", "03/21/16" ) )
[1] "2015-02-18" "2016-03-21"

but this would have to be tailored to the formatting problems in your data 
and is not really a general solution.

On Wed, 3 Feb 2016, Boris Steipe wrote:

> As the documentation says, that's exactly what the expansion will do by default.
>
> B.
>
>
> On Feb 3, 2016, at 2:31 PM, carol white <wht_crl at yahoo.com> wrote:
>
>> yes, some of them are like 09/01/15 and some others are 09/01/2015 and all of them range between 2015 and 2016. The goal was to convert 09/01/15 to 09/01/2015. I don't know if the fact that they range between 2015 and 2016 make the task easier.
>>
>> Best wishes
>> Carol
>>
>>
>> On Wednesday, February 3, 2016 7:34 PM, Boris Steipe <boris.steipe at utoronto.ca> wrote:
>>
>>
>> Sorry - messed up example: corrected here...
>>
>> d <- "7/27/77"
>> strptime(d, format="%m/%d/%y")  #  "1977-07-27 EDT"
>> x <- strptime(d, format="%m/%d/%y")
>>
>> strftime(x, format="%m/%d/%Y")  # "07/27/1977"
>>
>>
>> On Feb 3, 2016, at 1:29 PM, Boris Steipe <boris.steipe at utoronto.ca> wrote:
>>
>>> It seems your autocorrect is playing tricks on you but if I understand you correctly you have a two digit year and want to convert that to a four digit year? That's not uniquely possible of course; by convention, as the documentation to strptime() says:
>>>
>>>  On input, values 00 to 68 are prefixed by 20 and 69 to 99 by 19 ? that
>>>  is the behaviour specified by the 2004 and 2008 POSIX standards...
>>>
>>> If this is correct for you, you need to convert the string to a time object and the time object back to string. The format specifier %Y prints four-digit years:
>>>
>>>
>>> d <- "7/27/59"
>>> strptime(d, format="%m/%d/%y")  # "2059-07-27 EDT"
>>> x <- strptime(d, format="%m/%d/%y")
>>>
>>> strftime(x, format="%m/%d/%Y")  # "07/27/1977"
>>>
>>>
>>>
>>> B.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Feb 3, 2016, at 11:03 AM, carol white via R-help <r-help at r-project.org> wrote:
>>>
>>>> Hi,might be trivial but how to determine the year of a date which is in the %m/%d/%y format and those whose year is century should be modified to ISO so that all date will have with year in ISO?
>>>> Regards,
>>>> Carol
>>>>
>>>>     [[alternative HTML version deleted]]
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k



More information about the R-help mailing list