[R] Getting the month out of my date as a number not characters
Don MacQueen
macq at llnl.gov
Thu Jul 2 17:14:34 CEST 2009
Try
hf$hour <- as.POSIXlt(hf$date)$hour
hf$month <- as.POSIXlt(hf$date)$mon+1
To see why, use the man pages to study the structure of POSIXlt objects. Try:
> tmp <- strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS")
> unclass(tmp)
For example:
> tmp <- strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS")
> foo <- data.frame(date=c(tmp,tmp+3600), x=1:2)
> foo
date x
1 2006-02-20 11:16:16 1
2 2006-02-20 12:16:16 2
> foo$hour <- as.POSIXlt(foo$date)$hour
> foo$mon <- as.POSIXlt(foo$date)$mon+1
>
> foo
date x hour mon
1 2006-02-20 11:16:16 1 11 2
2 2006-02-20 12:16:16 2 12 2
Just to be thorough, note:
> class(tmp)
[1] "POSIXt" "POSIXlt"
> class(foo$date)
[1] "POSIXt" "POSIXct"
So strptime() creates objects of class POSIXlt, which are silently
converted to POSIXct when put in a dataframe.
Compare
unclass(tmp)
unclass(foo$date)
-Don
At 11:40 AM +0100 7/2/09, Tim Chatterton wrote:
>I have a data frame (hf) that is all set up and the dates are
>working fine - however I need to extract the months and hours (2
>separate columns) as numbers - however they are coming out as
>characters.
>
>I have tried both the following:
>
>hf50$hour= hf50$date
>hf50$hour=format(hf50["hour"],"%H")
>
>and
>
>hf$month <- as.POSIXct(strptime(hf$date, format = "%m"))
>
>but they are still coming out as characters.
>
>Any ideas please?
>Thanks,
>Tim.
>
>______________________________________________
>R-help at r-project.org mailing list
>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.
--
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA
925-423-1062
More information about the R-help
mailing list