从"POSIXlt""POSIXt"对象只保留小时:分钟:秒

Mar*_*ina 4 r

我在R中制作一个情节(在一个情节中绘制三天的时间序列).我有一个"POSIXlt""POSIXt"向量,我只需要保留没有年,月,日的时间(小时,分钟......).

"2004-09-08 13:50:00 GMT" ---> 13:50:00
"2004-09-08 14:00:00 GMT" ---> 14:00:00
"2004-09-08 14:10:00 GMT" ---> 14:10:00
"2004-09-08 14:20:00 GMT" ---> 14:20:00
"2004-09-08 14:30:00 GMT" ---> 14:30:00
Run Code Online (Sandbox Code Playgroud)

那可能吗?

我已经能够使向量中的所有元素具有相同的年/月/日.它适用于我的情节,但我不认为是合适的解决方案.

"2004-09-08 13:50:00 GMT" ---> "2014-10-19 13:50:00 GMT"
"2004-09-08 14:00:00 GMT" ---> "2014-10-19 14:00:00 GMT"
"2004-09-08 14:10:00 GMT" ---> "2014-10-19 14:10:00 GMT"
"2004-09-08 14:20:00 GMT" ---> "2014-10-19 14:20:00 GMT"
"2004-09-08 14:30:00 GMT" ---> "2014-10-19 14:30:00 GMT"
Run Code Online (Sandbox Code Playgroud)

谢谢

G. *_*eck 8

假设我们有POSIXct值x.

library(chron)

# input
y <- 1:5
x <- as.POSIXct(c("2004-09-08 13:50:00", "2004-09-08 14:00:00", "2004-09-08 14:10:00",
"2004-09-08 14:20:00", "2004-09-08 14:30:00"))
Run Code Online (Sandbox Code Playgroud)

1)将它们转换为chron类"times"并绘制:

ti <- times(format(x, "%H:%M:%S"))
plot(y ~ ti)
Run Code Online (Sandbox Code Playgroud)

2)或者你可以用动物园这样做:

library(zoo)

z <- zoo(y, x)

# convert index to "times" class and plot
zz <- z
time(zz) <- times(format(time(zz), "%H:%M:%S"))
plot(zz)
Run Code Online (Sandbox Code Playgroud)

2a)或使用ggplot2 autoplot.zoo来绘制:

library(ggplot2)
autoplot(zz) + scale_x_chron(format = "%H:%M")
Run Code Online (Sandbox Code Playgroud)

2b)我们也可以通过标记而不是转换索引类来处理这个问题.这使用了zoo/ggplot2/scales而不是chron次,只是重新标记X轴:

library(scales)
autoplot(z) + scale_x_datetime(breaks = "10 min", labels = date_format("%H:%M"))
Run Code Online (Sandbox Code Playgroud)