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
相关产品推荐
相关产品推荐

