不能强制列为 R 中的相同日期时间类型

Cannot coerce column to be the same date time type in R

提问人:andrew ozbun 提问时间:9/19/2023 最后编辑:Markandrew ozbun 更新时间:9/21/2023 访问量:20

问:

> class(report_df$LASTACTIVITYDATE)
[1] "POSIXct" "POSIXt" 

由于存在 POSIXct 和 POSIXt 的混合数据类型,因此我无法正确处理我的数据。 润滑剂出现问题。

当我尝试以下任一方法时,它无济于事:

library(lubridate)

report_df$LASTACTIVITYDATE <- as.POSIXct(report_df$LASTACTIVITYDATE)

report_df <- report_df %>% mutate(LASTACTIVITYDATE = mdy_hms(LASTACTIVITYDATE))

有时它只是将整个列更改为 NA。

还有其他人经历过吗?

r datetime posix 润滑剂 posixct

评论


答:

0赞 Mark 9/21/2023 #1

您的数据是 POSIXct 是 POSIXt。POSIXt 是 POSIXct 和 POSIXlt 的一种父类。

从文档中:

“POSIXct”更方便包含在数据帧中,而“POSIXlt”更接近人类可读的形式。虚拟类 [(见注释 1)] “POSIXt” 继承自这两个类:它用于允许减法等操作混合这两个类。(来源)

至于为什么你的尝试似乎没有奏效:

  • using 不会做任何事情,因为数据已经是 POSIXct 格式as.POSIXct()
  • mdy_hms()分析字符串,而不是 POSIXct 对象。任何它无法解析它的人都会返回 NA。

笔记:

  1. “存在没有实际对象的类,虚拟类,实际上是一个非常重要的编程工具。它们用于将想要共享某些编程行为的普通类组合在一起,而不必限制行为的实现方式。如果希望包含槽,虚拟类定义可以包含槽(以提供一些常见行为,而无需完全定义对象 - 有关示例,请参阅 traceable-class)。(来源)