【问题标题】:Convert factor values to POSIXct with dmy_hms turns half of the values to NA使用 dmy_hms 将因子值转换为 POSIXct 将一半的值变为 NA
【发布时间】:2017-05-16 20:01:11
【问题描述】:

我的目标是将数据集中的日期和时间列(两个因子值)连接到结构 POSIXct 的一列。列如下所示:

  Date      Time

1 11.05.2016 09:45:00

2 11.05.2016 09:46:00

3 11.05.2016 09:47:00

4 11.05.2016 09:49:00

我首先尝试的是:

D1 = paste(D$Date, D$Time) 

Date_Time = as.POSIXct(D1, format='%d.%m.%y %H:%M:%S')

as.data.frame(Date_Time)

我得到的是每行中的 Na 值。我找不到原因,所以我尝试了使用 lubridate 包的不同方法:

Date_Time = mdy_hms(D1,tz="")

Date_Time = as.data.frame(Date_Time)

控制台界面返回:“134021 failed to parse”,大概是我数据的一半。转换后的数据几乎总是一个月前两周的日期和时间。我的问题是,为什么它将一半的值转换为 NA,我该如何解决这个问题?为什么它与 as.POSIXct 命令根本不起作用?

谢谢。

【问题讨论】:

  • 您的paste() 可能是错误的——请使用paste(as.character(...), as.character(...))

标签: r na posixct


【解决方案1】:

您应该使用Y 而不是y 4 位数年份:

Date_Time = as.POSIXct(D1, format='%d.%m.%Y %H:%M:%S')

【讨论】:

  • 就是这样。我不敢相信,但它现在有效。当我重写代码时,我一定一遍又一遍地犯了同样的错误。非常感谢您的快速回复。
  • @CarolusFridericus 欢迎您。由于您是 SO 新手,请在觉得有帮助时接受答案。
【解决方案2】:

paste 函数之后如果你需要时间也可以使用它

Date_Time<- strptime(Date, "%d.%m.%Y %H:%M:%S")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多