【问题标题】:converting date into timestamp in R在R中将日期转换为时间戳
【发布时间】:2023-03-31 06:12:01
【问题描述】:

我已经在 R 中搜索了有关时间戳转换的线程,但无法弄清楚这一点。 我需要将时间列转换为时间戳,以便 R 将其读取为日期。当单元格只有没有时间的日期时,没有问题,但是当前格式(单元格中有 + 或没有它 - R 将其视为整数或因子)。 如何将其转换为时间戳?

谢谢

【问题讨论】:

  • 也许可以去掉 +,用 substr(t, 1, nchar(t)-1) 之类的东西,然后转换为日期
  • 删除 + 给我留下了 29/11/2014 15:23 而不是 29-11-2014 15:23... 我错过了日期和时间部分的转换
  • 当你说它把它看作一个整数或一个因子时,这让我相信你在没有设置stringsAsFactors = FALSE 的情况下读取你的数据。这可能是您无法将其转换为日期的原因。否则,如果您将有效的格式参数传递给 as.Date,它应该可以正常工作
  • 不,您确实不需要需要删除它。请参阅我刚刚添加的答案。
  • 并且,为了将来参考,请不要将数据作为屏幕截图包含。见this SO post for why

标签: r timestamp


【解决方案1】:

您确实不需要删除+

R> crappyinput <- c("2014-11-29 15:23:02+", "2014-11-29 15:38:36+", 
+                   "2014-11-29 15:52:49+")
R> pt <- strptime(crappyinput, "%Y-%m-%d %H:%M:%S")
R> pt
[1] "2014-11-29 15:23:02 CST" "2014-11-29 15:38:36 CST" "2014-11-29 15:52:49 CST"
R> 

它将被简单地作为尾随垃圾忽略。

【讨论】:

    【解决方案2】:

    这对你有用吗?

    t <- c("2014-11-29 15:23:02+")
    t <- substr(t, 1, nchar(t)-1)
    t
    [1] "2014-11-29 15:23:02"
    t <- strptime(t, format="%Y-%m-%d")
    str(t)
     POSIXlt[1:1], format: "2014-11-29"
    

    【讨论】:

    • 您甚至不必删除加号。 t &lt;- as.Date("2014-11-29 15:23:02+", format = "%Y-%m-%d %H:%M:%S+") 产生相同的结果,但与 POSIXlt 的类不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多