【问题标题】:how to convert factor into DateTime in R?如何在R中将因子转换为日期时间?
【发布时间】:2014-04-15 21:26:48
【问题描述】:

这个问题对你们中的一些人来说可能很简单,但请耐心等待,因为我是 R 的初学者。

我有一个包含 DateTime 数据的因子列(称为时间)的数据框,如下所示:

time
01/01/2011 00:10
02/01/2011 03:00
03/01/2011 05:00
04/01/2011 10:03

我想将此列转换为 R 中的 DateTime 列。我搜索并尝试了一些功能,但它给了我“NA”的结果。以下功能是我尝试过的:

> dataframe1$datetime <- as.POSIXlt(as.character(dataframe1$time), format="%d/%m/%Y %H:%M")
> dataframe1$datetime <- as.POSIXlt(strptime(dataframe1$time), format="%d/%m/%Y %H:%M")
> dataframe1$datetime <- as.POSIXlt(dataframe1$time, format="%d/%m/%Y %H:%M")
> dataframe1$datetime <- as.chron(dataframe1$time, "%d/%m/%Y %H:%M")

我不知道还能尝试什么。理想情况下,我希望添加三列,即日期时间、日期和时间。

【问题讨论】:

    标签: r datetime


    【解决方案1】:

    试试:

    dataframe1$datetime <- strptime(x = as.character(dataframe1$datetime),
                                    format = "%d/%m/%Y %H:%M")
    

    【讨论】:

    • 我可以提取日期,但不能提取时间。我用dataframe1$datetime &lt;- strptime(x = as.character(dataframe1$datetime), format = "%H:%M") 有什么想法吗?
    • 据我所知,没有仅适用于 H-M-S 的日期/时间类别;您的选择是 Y-M-D 或 Y-M-D-H-M-S-etc-etc。不过,如果你找到了,我很想知道!
    • 我找到了解决方案dataframe1$time &lt;- format(dataframe1$datetime, "%H:%M:%S") :)
    【解决方案2】:

    可能最简单的做法是使用lubridate 包,它具有大量用于日期操作的函数。以下会将您的时间转换为 POSIXct 对象:

     library(lubridate)
     mdy_hm( as.character(dataframe1$time) )
    

    查看?mdy 了解各种日期解析功能。

    对于不依赖于 lubridate 的稍微详细一点的版本

    strptime(x = as.character( dataframe1$datetime ), format = "%d/%m/%Y %H:%M")
    

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多