R语言中如何将“月-年”格式字符串转换为日期格式
问题原因
as.Date()生成标准日期格式需要日维度的信息,仅提供年月时函数无法自动补全,会直接返回NA- 若R运行在中文locale环境下,格式符
%b默认匹配中文月份缩写,无法识别Sep/Oct这类英文月份缩写,也会触发转换失败
解决方案
基础R包实现
# Windows系统设置英文locale,macOS请替换为 "en_US.UTF-8" Sys.setlocale("LC_TIME", "English") # 补全当月1日的信息后转标准日期 std_date <- as.Date(paste0("01-", Dates), format = "%d-%b-%Y") # 转换为"09-2016"格式的字符串 formatted_date <- format(std_date, "%m-%Y") # 切回中文locale(可选) Sys.setlocale("LC_TIME", "Chinese")
lubridate包实现(更简便,无需调整locale)
# 未安装包先运行 install.packages("lubridate") library(lubridate) # 直接解析月-年格式字符,自动补全为当月1日 std_date <- my(Dates) # 转换为指定格式字符串 formatted_date <- format(std_date, "%m-%Y")
转换效果示例
输入示例:"Sep-2016" "Oct-2016" "Nov-2016"
- 标准日期输出:
2016-09-01 2016-10-01 2016-11-01 - 自定义格式输出:
"09-2016" "10-2016" "11-2016"
内容的提问来源于stack exchange,提问作者haroldchoi
相关产品推荐
相关产品推荐

