[R] question about formatting Dates

Rui Barradas ruipbarradas at sapo.pt
Wed Jun 27 11:16:08 CEST 2012


Hello,

I'm afraid you're wrong, this has nothing to do with leading zeros. Just 
see:

x <- c("1/2/2011",  "1/4/2011",  "1/4/2011",  "1/4/2011",  "1/6/2011", 
"1/7/2011",
	"1/8/2011",  "1/9/2011",  "1/10/2011")
as.Date(x, "%m/%d/%Y")

y <- factor(x)
str(y)
as.Date(as.character(y), "%m/%d/%Y")


Note that the correct way of transforming factors into their levels is 
to index the levels by the factor's values (which are always positive 
integers):

levels(y)[y]
[1] "1/2/2011"  "1/4/2011"  "1/4/2011"  "1/4/2011"  "1/6/2011"  "1/7/2011"
[7] "1/8/2011"  "1/9/2011"  "1/10/2011"


Also, if those dates come from a file, maybe you want to read.table or 
read.csv with the option

stringsAsFactors = FALSE

and avoid the problem altogether. This has the side effect that all 
character variables will be read in as character variables and some 
might be categorical. What an ugly sentence! So this option must be used 
with caution.

Hope this helps,

Rui Barradas

Em 27-06-2012 04:54, Erin Hodgess escreveu:
> Dear R People:
>
> I have dates as factors in the following:
>
>> poudel.df$DATE
> [1] 1/2/2011  1/4/2011  1/4/2011  1/4/2011  1/6/2011  1/7/2011  1/8/2011
> [8] 1/9/2011  1/10/2011
> Levels: 1/10/2011 1/2/2011 1/4/2011 1/6/2011 1/7/2011 1/8/2011 1/9/2011
>
>
>
> I want them to be "regular" dates which can be sorted, etc.
>
> But when I did this:
>
>> as.character(poudel.df$DATE)
> [1] "1/2/2011"  "1/4/2011"  "1/4/2011"  "1/4/2011"  "1/6/2011"  "1/7/2011"
> [7] "1/8/2011"  "1/9/2011"  "1/10/2011"
>
> and
>> as.Date(as.character(poudel.df$DATE),"%m/%d/$Y")
> [1] NA NA NA NA NA NA NA NA NA
>
> because the dates do not have leading zeros.
>
> There are approximately 30 years of nearly daily data in the entire set.
>
> Any suggestions would be much appreciated.
>
> Sincerely,
> Erin
>
>



More information about the R-help mailing list