【问题标题】:R - Convert Unix to time AND date columnsR - 将 Unix 转换为时间和日期列
【发布时间】:2021-09-17 06:25:36
【问题描述】:

我有一个数据框,其中有一列 (expires) 带有 unix 时间码。我想将它们转换为两个单独的列,一列用于时间 (expires_time),另一列用于日期 (expires_date)。我从这篇文章中的一段简单代码开始:Convert UNIX time string to date in R

到目前为止我所拥有的是:

df$expires_converted <- as.POSIXct(df$expires, origin = "1970-01-01")

这会生成一个名为 expires_converted 的新列,它以以下格式为我提供时间和日期:

2021-08-03 17:50:00

有没有办法按照我上面的描述将 unix 代码转换成两个单独的列?我意识到我可以简单地将新列拆分为两个新列,使用空格将它们分开,但我想知道是否有更简单的方法来做到这一点?

【问题讨论】:

  • 这能回答你的问题吗? Extract date and time from datetime field in R
  • 不完全-我希望有一种方法可以修改我正在使用的代码(请参阅我的帖子),而不是添加另一个步骤。我已经有了使用“分离”在空白处拆分列的解决方案。我只是想知道是否有办法一次性做到这一点!

标签: r unix unix-timestamp


【解决方案1】:

R 没有内置的 Time 类,因此您的解决方案将取决于您希望如何存储时间:作为字符或作为依赖于包的时间类。

另外,如果“一次性”是指“在一个语句中”,那么可能不是因为您想将数据存储在两个单独的列中,这很可能意味着两个不同的分配。但你可以靠近:

library(lubridate)
library(hms)
library(tibble)

tibble(
  d=now(), 
  datePart=as_date(d),
  timePart=as_hms(d)
)
# A tibble: 1 x 3
  d                   datePart   timePart       
  <dttm>              <date>     <time>         
1 2021-07-06 17:53:07 2021-07-06 17:53:07.114918

请注意,无需将转换嵌入到 tibble 中。我这样做只是为了简要确认派生的每个部分的类。

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多