【问题标题】:Problem with convertation from "Factor" to "Date"从“因子”转换为“日期”的问题
【发布时间】:2019-05-07 08:57:15
【问题描述】:

需要将数组列从Factor类型转换为Date类型。

首先我尝试随时使用函数来做到这一点:

library(anytime)
anydate(trash8$DMY)

我与 as.Date 合作的第二个:

as.Date(trash8$DMY, format="%d-%m-%Y")

在第一次和第二次尝试之后,我得到了一个结果 - 所有日期都采用了形式 - NA

   [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [27] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [53] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [79] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [105] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [131] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [157] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [183] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [209] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [235] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

你能帮我理解,我做错了什么吗?或者,也许,你知道另一种尝试?!

实际值:

dput(head(trash8$DMY))
structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("01.01.16", "01.02.16", 
"01.02.17", "01.02.18", "01.02.19", "01.03.16", "01.03.17", "01.03.18", 
"01.03.19", "01.04.16", "01.04.17", "01.04.18", "01.04.19", "01.05.16", 
"01.05.17", "01.05.18", "01.05.19", "01.06.16", "01.06.17", "01.06.18", 
"01.07.16", "01.07.17", "01.07.18", "01.08.16", "01.08.17", "01.08.18", 
"01.09.16", "01.09.17", "01.09.18", "01.10.16", "01.10.17", "01.10.18", 
"01.11.16", "01.11.17", "01.11.18", "01.12.16", "01.12.17", "01.12.18", 
"02.01.16", "02.01.17", "02.01.18", "02.01.19", "02.02.16", "02.02.17", 
"02.02.18", "02.02.19", "02.03.16", "02.03.17", "02.03.18", "02.03.19", 
"02.04.16", "02.04.17", "02.04.18", "02.04.19", "02.05.16", "02.05.17", 
"02.05.18", "02.05.19", "02.06.16", "02.06.17", "02.06.18", "02.07.16", 
"02.07.17", "02.07.18", "02.08.16", "02.08.17", "02.08.18", "02.09.16", 
"02.09.17", "02.09.18", "02.10.16", "02.10.17", "02.10.18", "02.11.16", 
"02.11.17", "02.11.18", "02.12.16", "02.12.17", "02.12.18", "03.01.16", 
"03.01.17", "03.01.18", "03.01.19", "03.02.16", "03.02.17", "03.02.18", 
"03.02.19", "03.03.16"), class = "factor")

【问题讨论】:

  • as.Date 应该与factor 一起使用。请显示实际值。可能是你的格式不对
  • 欢迎来到 Stack Overflow!你可能想通读How to make a great R reproducible example。事实上,如果没有看到您的数据,任何人都很难帮助您。请编辑您的问题以包含来自dput(head(trash8$DMY)) 的输出,以便我们可以看到格式,正如@akrun 所说。
  • 可能您需要更改as.Date 中的format 参数
  • format 应该是 "%d.%m.%y"
  • 您是否尝试过使用 lubridate 包中的 parse_date_time 函数?到目前为止,这个函数在我所有将向量转换为日期的项目中都是最有帮助的。

标签: r


【解决方案1】:

根据dput 数据,format 应该是不同的

trash8$DMY <- as.Date(trash8$DMY, format="%d.%m.%y")
trash8$DMY
#[1] "2016-01-01" "2016-01-01" "2016-01-01" "2016-01-01" "2016-01-01" "2016-01-01"
class(trash8$DMY)
#[1] "Date"

【讨论】:

  • 同一类 - 因素
  • @КириллМинин 您是否已将输出分配回列?是Date
  • 我忘了这个。感谢帮助,现在是 Date 类!
  • @КириллМинин 好的,所以它有效,那么现在下一个问题是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多