提问人:andrew ozbun 提问时间:9/19/2023 最后编辑:Markandrew ozbun 更新时间:9/21/2023 访问量:20
不能强制列为 R 中的相同日期时间类型
Cannot coerce column to be the same date time type in R
问:
> 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。
还有其他人经历过吗?
答:
0赞
Mark
9/21/2023
#1
您的数据既是 POSIXct 又是 POSIXt。POSIXt 是 POSIXct 和 POSIXlt 的一种父类。
从文档中:
“POSIXct”更方便包含在数据帧中,而“POSIXlt”更接近人类可读的形式。虚拟类 [(见注释 1)] “POSIXt” 继承自这两个类:它用于允许减法等操作混合这两个类。(来源)
至于为什么你的尝试似乎没有奏效:
- using 不会做任何事情,因为数据已经是 POSIXct 格式
as.POSIXct()
mdy_hms()
分析字符串,而不是 POSIXct 对象。任何它无法解析它的人都会返回 NA。
笔记:
- “存在没有实际对象的类,虚拟类,实际上是一个非常重要的编程工具。它们用于将想要共享某些编程行为的普通类组合在一起,而不必限制行为的实现方式。如果希望包含槽,虚拟类定义可以包含槽(以提供一些常见行为,而无需完全定义对象 - 有关示例,请参阅 traceable-class)。(来源)
评论