Предположим, что у меня есть следующее data.frame
foo
start.time duration
1 2012-02-06 15:47:00 1
2 2012-02-06 15:02:00 2
3 2012-02-22 10:08:00 3
4 2012-02-22 09:32:00 4
5 2012-03-21 13:47:00 5
И class(foo$start.time)
возвраты
[1] "POSIXct" "POSIXt"
Я хотел бы создать график foo$duration
против foo$start.time
. В моем сценарии мне только интересно во время суток, а не фактический день года. Как каждый идет об извлечении времени суток как hours:seconds от POSIXct
класс вектора?
Это - древняя тема, но я нашел очень немного вопросов и ответов об этом вопросе. Моим решением является следующий
library(hms)
foo <- data.frame(start.time = c("2012-02-06 15:47:00",
"2012-02-06 15:02:00",
"2012-02-22 10:08:00"),
duration = c(1,2,3))
foo$start.time = as.POSIXct( foo$start.time )
g1 = ggplot( ) + xlab("") +
geom_line( data = foo, aes(x = as.hms(start.time), y = duration ), color = "steelblue" )
g1
, Если требуется добавить ручные повреждения времени (!), затем
time_breaks = as.POSIXlt(c(
"2012-02-06 12:35:00 MSK",
"2012-02-06 13:15:00 MSK",
"2012-02-06 14:22:00 MSK",
"2012-02-06 15:22:00 MSK"))
g1 +
scale_x_time( breaks = as.hms( time_breaks ) ) +
theme( axis.text.x = element_text( angle=45, vjust=0.25) )