R语言中如何为%m-%Y格式的日期月份添加前导零
错误原因
as.Date()要求输入的日期包含完整的年、月、日三个维度,你提供的字符串只有月和年,R无法解析为合法的日期对象,因此全部返回NA。
解决方案
方法1:基础R正则处理(无需安装额外包)
直接用正则匹配单数字开头的月份,在前面补上前导零即可:
data = c("2-2021", "8-2020", "11-2020", "11-2020", "7-2021", "12-2020", "2-2021", "5-2021", "11-2020", "11-2020") result <- sub("^(\\d)-", "0\\1-", data)
运行后result就是你需要的输出:
c("02-2021", "08-2020", "11-2020", "11-2020", "07-2021", "12-2020", "02-2021", "05-2021", "11-2020", "11-2020")
方法2:使用lubridate日期处理包(适合后续还要做日期运算的场景)
先将字符串解析为年月类型,再按指定格式输出即可:
# 未安装的话先运行 install.packages("lubridate") library(lubridate) result <- format(my(data), "%m-%Y")
得到的结果和上面完全一致。
内容的提问来源于stack exchange,提问作者Andres Mora
相关产品推荐
相关产品推荐

