R语言中将日期字符串转换为年-月格式的实现方法
R语言8位字符串日期转年-月格式操作
初始测试数据
原始构造的测试数据框如下,date列存储无分隔符的8位字符串日期:
library(tibble) df <- tribble( ~date, '20201227', )
期望输出的新数据框结构为:
new_df <- tribble( ~date, '2020-12', )
具体实现方法
- 快速字符串截取实现
8位无分隔日期的排布规则固定:前4位为年份,第5-6位为月份,无需加载复杂日期处理逻辑,直接截取拼接即可得到目标值:
该方法运行速度最快,无额外计算开销,仅要求输入字符串的年、月位置符合固定规则。library(dplyr) new_df <- df %>% mutate( date = paste0(substr(date, 1, 4), "-", substr(date, 5, 6)) ) - 带合法性校验的日期解析实现
如果需要识别无效日期值(比如不存在的13月、2月30日这类非法输入),可以先将字符串转换为标准日期对象,再按目标格式化输出:
基础R实现:
lubridate包简化实现:new_df <- df %>% mutate( date = format(as.Date(date, format = "%Y%m%d"), format = "%Y-%m") )library(lubridate) new_df <- df %>% mutate(date = format(ym(date), "%Y-%m"))
内容的提问来源于stack exchange,提问作者datazang
相关产品推荐
相关产品推荐

