r - 只保留小时 : minute:second from a "POSIXlt" "POSIXt" object

标签 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

那可能吗?

我已经能够使向量中的所有元素都具有相同的年/月/日。它适用于我的情节,但我认为不是合适的解决方案。
"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"

谢谢

最佳答案

假设我们有 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"))

1) 将它们转换为 chron 类 "times"和情节:
ti <- times(format(x, "%H:%M:%S"))
plot(y ~ ti)

2) 或者你可以用 zoo 来做到这一点:
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)

2a) 或将 ggplot2 与 autoplot.zoo 一起使用绘制:
library(ggplot2)
autoplot(zz) + scale_x_chron(format = "%H:%M")

2b) 我们也可以仅通过标记而不是转换索引类来处理这个问题。这使用 zoo/ggplot2/scales 但不使用 chron 时间并简单地重新标记 X 轴:
library(scales)
autoplot(z) + scale_x_datetime(breaks = "10 min", labels = date_format("%H:%M"))

关于r - 只保留小时 : minute:second from a "POSIXlt" "POSIXt" object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453121/

相关文章:

r - 喜悦图上的 x 轴显示不正确的值

r - 将数据帧的每一列提取到一个对象中

r - dplyr eval 中的错误(expr、envir、enclos): object '.' not found

缓解 R for Windows 中的反斜杠刺激

r - 如何为自定义数据框重载 RStudio 的 View 函数?

r - 在 R 中用 data.table 查找并替换值?

r - 根据另一个数据帧中的数据更改一个数据帧上的值

r - rlang::flatten() 的基本等价物是什么?

r - Rmarkdown 中的粗体内联方程

r - R中使用 'stringdist'和 'amatch'进行字符串匹配