【问题标题】:R as.POSIXct conversion to as.DateR as.POSIXct 转换为 as.Date
【发布时间】:2020-10-12 18:08:40
【问题描述】:

我正在处理一个 data.frame 对象,该对象在第一列中包含一个“日期”字段。最初,我将所有日期(以纯字符串形式出现在“日期”中)转换为应用 as.POSIXct() 的 POSIXct 日期,但后来我意识到 as.Date 足以满足我的目的。所以我将 as.Date() 函数应用于 POSIXct 日期,我得到了一个奇怪的结果:所有日期都缩小了一天('2020-07-02 01:00:00' --> '2020-07-01' )。还尝试了as.Date.POSIXct(),结果相同。
我在转换中遗漏了什么吗?这种类型的转换合法吗?
谢谢

【问题讨论】:

  • 时区,例如,如果您的本地 tz 是 EST,那么您的 '2020-07-02 01:00:00' --> '2020-07-01 21:00:00'跨度>

标签: r posixct


【解决方案1】:

在不确切知道数据是什么样子的情况下,我最好的猜测与从 POSIXct 转换时 as.Date() 函数调用中使用的原始日期有关。 Hadley 解释说here POSIXct 和 POSIXlt 数据类型实际上只是表示自 1970 年 1 月 1 日以来的秒数的双浮点值。根据 ?as.Date,如果您要转换类数字的值,您应该为 origin 参数提供一个值。

您可以重新加载您的原始数据,并使用 as.Date() 和 as.POSIXct() 看看 origin 参数如何影响准确的转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多