【问题标题】:Separate datetime string for plot用于绘图的单独日期时间字符串
【发布时间】:2012-02-06 23:27:36
【问题描述】:

我有一个这样的日期时间字符串:

> mydatetime
 [1] "2012-01-07 14:53:52 EST" "2012-01-07 07:57:03 EST"
 [3] "2012-01-07 17:42:28 EST" "2012-01-08 10:28:35 EST"
 [5] "2012-01-08 10:37:22 EST" "2012-01-09 08:12:00 EST"
 [7] "2012-01-09 08:11:44 EST" "2012-01-09 17:45:24 EST"
 [9] "2012-01-09 14:28:22 EST" "2012-01-09 13:14:38 EST"

我想将日期和时间分成单独的对象。我可以成功获取日期:

> as.Date(mydatetime)
 [1] "2012-01-07" "2012-01-07" "2012-01-07" "2012-01-09" "2012-01-08"
 [6] "2012-01-08" "2012-01-08" "2012-01-09" "2012-01-09" "2012-01-09"

如何提取时间部分?我的目标是在 y 轴上绘制日期,在 x 轴上绘制时间,以显示每天的时间。似乎 plot 函数需要特殊格式,所以字符串在这里不起作用。任何有关时间线式绘图功能的建议也值得赞赏。谢谢!

更新

Simon 下面的回答对我有用。但是,我必须先从 mydatetime 中提取日期子字符串,然后使用 as.Date。

date <- as.Date(substr(mydatetime, 0,10))

由于某种原因,休息了五个小时。例如,2012-01-09 19:05:21 EST 将转换为 2012-01-10。我的时区设置看起来不错,将该字符串放入 as.Date 中直接给出了2012-01-09。没问题,我对这个解决方案很满意。谢谢。

【问题讨论】:

    标签: r date time plot


    【解决方案1】:

    有几种方法——要么你把它当作一个字符串:

    time = as.POSIXct(substr(mydatetime, 12,19),format="%H:%M:%S")
    plot(time, as.Date(mydatetime))
    

    或者你计算日期:

    time = .POSIXct(as.numeric(as.POSIXct(mydatetime)) %% 86400)
    plot(time, as.Date(mydatetime))
    

    生成的绘图范围存在细微差别。

    【讨论】:

    • 我没时间做 HMS。我仍然得到整个日期字符串:as.POSIXct(substr("2016-03-02 16:14:27", 12, 19), format="%H:%M:%S") 当我想要16:14:27 时产生"2016-03-16 16:14:27 EDT"
    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    相关资源
    最近更新 更多