R使用lubridate包make_datetime生成日期列类显示unknown如何解决
问题解答
问题原因
lubridate包的make_datetime函数返回c("POSIXct", "POSIXt")双类属性是标准设计,属于正常现象。POSIXct类型默认继承POSIXt父类,手动删除POSIXt类属性会破坏时间对象的标准结构,导致依赖标准时间类的openair系列函数无法正常识别。- RStudio数据查看器悬停显示列类为unknown属于RStudio对data.table对象的展示兼容问题,和时间对象本身的有效性无关,不影响实际代码运行。
修复步骤
- 先恢复时间列的标准类属性
# 注意大小写匹配,如果你实际列名是大写的Date,请把date替换为Date class(data$date) <- c("POSIXct", "POSIXt")
- 生成时间列时建议显式指定时区,避免隐性时区导致的识别异常
library(lubridate) data$date <- make_datetime( year = data$Year, month = data$Month, day = data$Day, hour = data$Hour, min = data$Min, sec = data$Sec, tz = "UTC" # 可替换为实际数据对应的时区,比如"Asia/Shanghai" )
- 验证openair函数可用性
library(openair) # 替换为你实际的污染物列名即可测试 daily_data <- timeAverage(data, avg.time = "day", pollutant = "替换为实际污染物列名")
内容的提问来源于stack exchange,提问作者lizard
相关产品推荐
相关产品推荐

