[R] Extract time only from POSIXlt object

Gabor Grothendieck ggrothendieck at gmail.com
Sun Jan 30 13:28:57 CET 2011


On Sat, Jan 29, 2011 at 7:45 PM, Simon Goodman <s.j.goodman at leeds.ac.uk> wrote:
>
> How can I extract only the time component from an POSIXlt object?
>
> For example if I try the following it still returns both the date and
> time...
>
>>as.POSIXlt(tr.date[1])
> [1] "2010-10-18 21:46:53"
>>as.POSIXlt(tr.date[1],"%H:%M:%S")
> [1] "2010-10-18 21:46:53"
>
> round and trunc don't help...  is there an "as.Time" equivalent to as.Date
> ?
>

If you are looking for a class that represents time of day, the
"times" class in the chron package can do that:

> lt <- as.POSIXlt("2010-10-18 21:46:53")
> library(chron)
> tt1 <- times(format(lt, "%H:%M:%S")); tt1
[1] 21:46:53

or

> tt2 <- unname(as.chron(lt) - dates(as.chron(lt))); tt2
[1] 21:46:53


Now tt1 and tt2 are "times" objects and can be manipulated:

> tt1 + 1/24 # add an hour
[1] 22:46:53


Although not specifically about times you might wish to read R News
4/1 which gives a bit of detail on chron and further references.


-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com



More information about the R-help mailing list