[R] problem with strptime and 2010 dates

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Jan 6 18:12:19 CET 2010


On Wed, 6 Jan 2010, Larry White wrote:

> Hi, I'm reading data from a text file and transforming it in R and my date
> column seems to be getting corrupted. Can someone point out what's wrong?
> This code worked fine until I added a new date in 2010.

Seems unlikely, but we don't have a reproducible example.  If working 
as documented you would have got the wrong answer in 2009 also.

> thank you.
>
>
> To load the data I run:
> work_table = read.table(datafilename,header=TRUE)                  #read the
> data file
> attach(work_table)                                                 #attach
> the file for ease of use
> names(work_table) =
> c(     "cur_date", "week", "time_pct", "compl", "work_delta",
> "mean_delta", "balance", "total", "total_delta",
> "work", "index", "mean_pd_per_day")
>
> If I list the date element cur_date, I get:
>> work_table$cur_date
> [1] 8/17/2009  8/30/2009  9/6/2009   9/13/2009  9/20/2009  9/27/2009
> [7] 10/4/2009  10/13/2009 10/20/2009 10/27/2009 11/3/2009  11/10/2009
> [13] 11/17/2009 11/24/2009 12/2/2009  12/9/2009  12/16/2009 12/23/2009
> [19] 12/30/2009 1/6/2010
>
> This is correct.
>
>
> The line that produces the bad output is:
> dt <-strptime(as.character(work_table$cur_date), "%m/%d/%y")
>
> when I list dt I get:
>> dt
> [1] "2020-08-17" "2020-08-30" "2020-09-06" "2020-09-13" "2020-09-20"
> [6] "2020-09-27" "2020-10-04" "2020-10-13" "2020-10-20" "2020-10-27"
> [11] "2020-11-03" "2020-11-10" "2020-11-17" "2020-11-24" "2020-12-02"
> [16] "2020-12-09" "2020-12-16" "2020-12-23" "2020-12-30" "2020-01-06"
>
> The inside function as.character seems to provide correct output
>>
>> as.character(work_table$cur_date)
> [1] "8/17/2009"  "8/30/2009"  "9/6/2009"   "9/13/2009"  "9/20/2009"
> [6] "9/27/2009"  "10/4/2009"  "10/13/2009" "10/20/2009" "10/27/2009"
> [11] "11/3/2009"  "11/10/2009" "11/17/2009" "11/24/2009" "12/2/2009"
> [16] "12/9/2009"  "12/16/2009" "12/23/2009" "12/30/2009" "1/6/2010"
>
> which makes me think I'm doing something wrong in my strptime() call.

So look at the help page, and compare %y and %Y ...?

> as.character(bug_table$rep_date)
>
> Thanks very much for your help
>
> 	[[alternative HTML version deleted]]

Please note you were asked not to send HTML.  Also, strptime() is an 
OS function, so your OS might well have been relevant (see the posting 
guide).

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list