You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用readxl导入Excel时日期检测与转换异常问题求助

解决Excel日期导入R后格式异常及转换NA问题

首先先确认导入后两列的实际内容,运行以下代码查看:

head(ba_data$STARTED)

情况1:导入的是Excel日期序列化数字(如"45231"这类字符串)

这是因为Excel把日期存储为以1899-12-30为起点的天数,导入时被识别成了字符。可以这样转换:

# 转成仅包含日期的格式
ba_data$STARTED <- as.Date(as.numeric(ba_data$STARTED), origin = "1899-12-30")
ba_data$LASTDATA <- as.Date(as.numeric(ba_data$LASTDATA), origin = "1899-12-30")

# 如果需要保留时分秒,用POSIXct格式
ba_data$STARTED <- as.POSIXct(as.numeric(ba_data$STARTED)*86400, origin = "1899-12-30", tz = "UTC")
ba_data$LASTDATA <- as.POSIXct(as.numeric(ba_data$LASTDATA)*86400, origin = "1899-12-30", tz = "UTC")

情况2:导入的是y/m/d h:min:sec格式的字符但anydate未识别

用lubridate包的精准解析函数:

library(lubridate)

ba_data$STARTED <- ymd_hms(ba_data$STARTED)
ba_data$LASTDATA <- ymd_hms(ba_data$LASTDATA)

更稳妥的方法:导入时直接指定列类型

避免后续转换麻烦,导入时就告诉read_excel这两列是日期型:

ba_data <- read_excel(choose.files(), na = "-9", 
                      col_types = list(STARTED = "date", LASTDATA = "date"))

转换完成后,运行以下代码验证结果:

head(ba_data[, c("STARTED", "LASTDATA")])
str(ba_data[, c("STARTED", "LASTDATA")])

内容的提问来源于stack exchange,提问作者Anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:18:38