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

R语言字符型日期转Date类报错,如何转换并提取星期序号与名称

解决方案

报错原因

原date列的字符串格式为日.月.四位年,as.Date()函数未指定格式参数时无法自动识别该非标准日期格式,因此抛出格式不匹配错误。

基础包实现(无需额外安装依赖)

# 转换日期列格式,手动指定匹配原数据的格式模板:%d=日,%m=月,%Y=四位年
a$date <- as.Date(a$date, format = "%d.%m.%Y")
# 生成星期序号(周一为1,周日为7,匹配示例编号规则)
a$day_num <- as.integer(format(a$date, "%u"))
# 生成英文星期名称
a$weekday <- weekdays(a$date, locale = "en_US.UTF-8")

lubridate包实现(更简洁)

如果常用tidyverse系列工具,可使用lubridate包的日期解析函数简化代码:

# 未安装先执行:install.packages("lubridate")
library(lubridate)
# 自动解析日月年格式的日期
a$date <- dmy(a$date)
# 生成星期序号,指定周一为一周起点
a$day_num <- wday(a$date, week_start = 1)
# 生成英文星期全称
a$weekday <- wday(a$date, label = TRUE, abbr = FALSE, locale = "en_US.UTF-8")

结果验证

运行后最后一行数据如下,符合要求的输出格式:

sales_count       date day_num   weekday
20           3 2021-01-20       3 Wednesday

如果需要中文星期名称,删除代码中的locale = "en_US.UTF-8"参数即可,会自动返回系统默认语言的星期名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:48:02