【问题标题】:Convert Factor to Date/Time in R将因子转换为 R 中的日期/时间
【发布时间】:2014-06-14 11:11:07
【问题描述】:

这是我的数据框中包含的信息:

## minuteofday: factor w/ 89501 levels "2013-06-01 08:07:00",...
## dDdt: num 7.8564 2.318 ...
## minutes: POSIXlt, format: NA NA NA

我需要将分钟列转换为日期/时间格式:

minuteave$minutes <- as.POSIXlt(as.character(minuteave$minuteofday), format="%m/%d/%Y %H:%M:%S")

我试过as.POSIXltas.POSIXctas.Date。这些都没有奏效。有没有人有任何想法。

目标是绘制分钟与 dDdt 的关系,但它不会让我在我想要作为一个因素的指定时间段内进行绘制。我不知道接下来要尝试什么...

【问题讨论】:

    标签: r date posixct r-factor posixlt


    【解决方案1】:

    试试这个

    library(lubridate)
    minuteave$minutes <- ymd_hms(minuteave$minutes)
    

    这将返回 minuteave$minutes 作为 POSIXct 对象。

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:

      您需要在解析为日期时间或日期之前插入as.character()

      一个因素总是首先作为与其级别相对应的数字返回。

      您可以通过告诉read.csv() 等不存储因子来保存从因子到字符的转换:stringsAsFactors=FALSE。您也可以将其设置为全局选项。

      一旦将其作为字符,请确保将格式字符串与数据匹配

      R> as.POSIXct("2013-06-01 08:07:00", format="%Y-%m-%d %H:%M:%S")
      [1] "2013-06-01 08:07:00 CDT"
      R> 
      

      注意我使用的%Y-%m-%d,而不是你的%m/%d/%y

      于 2016 年 1 月 3 日编辑:现在这要容易得多,这要归功于 anytime 包,它可以自动从包括factor 在内的多种类型转换,并且不需要格式字符串.

      R> as.factor("2013-06-01 08:07:00")
      [1] 2013-06-01 08:07:00
      Levels: 2013-06-01 08:07:00
      R> 
      R> library(anytime)
      R> anytime(as.factor("2013-06-01 08:07:00"))
      [1] "2013-06-01 08:07:00 CDT"
      R> 
      R> class(anytime(as.factor("2013-06-01 08:07:00")))
      [1] "POSIXct" "POSIXt" 
      R> 
      

      如您所见,我们只是将因子变量输入anytime(),然后输出所需的 POSIXct 类型。

      【讨论】:

      • 我认为他已经插入了as.character 问题是他的imo格式有错误
      • 谢谢,我在第二次阅读时也注意到了这一点,并扩展了我的答案。剩下的问题(您的回答重复)是as.POSIXlt 转换(不提取分钟)。
      猜你喜欢
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      相关资源
      最近更新 更多