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

在R中将readxl读取Excel得到的数值转换回Date对象的相关问题

日期序列值还原方法

你看到的44025是Excel原生的日期序列值:默认1900日期系统下1900-01-01对应数值1,以此类推,该值刚好对应2020-07-13。可按以下两种场景处理:

场景1:读取文件时直接解析为日期

在调用read_excel()时通过col_types参数指定对应列的类型为日期,避免被识别为数值:

# 方式1:按列位置指定,示例中第3列为日期列
df <- readxl::read_excel("你的文件路径.xlsx", 
                         col_types = c("text", "numeric", "date"))

# 方式2:按列名批量指定,适配多日期列的场景
# 先读取表头获取列名
col_names <- names(readxl::read_excel("你的文件路径.xlsx", n_max = 0))
# 指定日期列的列名
date_cols <- c("订单日期", "发货日期")
# 生成列类型配置
col_types <- ifelse(col_names %in% date_cols, "date", "guess")
# 读取全量数据
df <- readxl::read_excel("你的文件路径.xlsx", col_types = col_types)

场景2:数据已读取为数值,后续转换

用as.Date()配合Excel的日期起始值转换即可,注意区分Excel的日期系统:

# 绝大多数Windows端Excel使用1900日期系统,origin固定为1899-12-30
df$日期列 <- as.Date(df$日期列, origin = "1899-12-30")

# 旧版macOS Excel如果用1904日期系统,替换origin为以下值
# df$日期列 <- as.Date(df$日期列, origin = "1904-01-01")

如果需要输出与原文件一致的2020-JUL-13格式,可通过format()函数格式化:

# 临时切换时间区域为英文,保证输出英文月份缩写
Sys.setlocale("LC_TIME", "English")
df$日期列 <- format(df$日期列, "%Y-%b-%d")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:36:04