如何将DataFrame中MDDYY格式的日期列转换为YYYYMMDD格式
第一个数据集的日期格式为“YYYYMMDD”,对应展示如下:
第二个数据集的日期格式为“MDDYY”,对应展示如下:
转换实现方案
核心逻辑
- 先补全MDDYY格式的前导0,统一为6位
MMDDYY格式:长度为5的MDDYY字符串(对应1-9月)前补1个0,长度为6的(对应10-12月)保留原值 - 将6位
MMDDYY解析为日期类型,处理两位年份的世纪归属 - 将日期格式化为
YYYYMMDD格式,全程保持数据为data.frame类型
代码示例
1. 依赖lubridate包实现(语法简洁,适配性强)
# 安装依赖(首次使用执行) # install.packages("lubridate") library(lubridate) # 示例第二个数据集(替换为你的实际数据集即可) df2 <- data.frame( id = 1:4, raw_date = c("10223", "111522", "63020", "122519"), other_col = rnorm(4) ) # 执行转换 df2$formatted_date <- df2$raw_date |> sprintf("%06s", x = _) |> # 补前导0统一为6位 mdy(cutoff_2000 = 30) |> # 解析为日期,cutoff_2000=30表示两位年<30归21世纪,>=30归20世纪,可按需调整 format("%Y%m%d") # 输出为YYYYMMDD格式 # 验证类型 class(df2) # 输出:[1] "data.frame"
2. Base R实现(无需额外安装包)
# 示例数据集 df2 <- data.frame( id = 1:4, raw_date = c("10223", "111522", "63020", "122519"), other_col = rnorm(4) ) # 补前导0 df2$pad_date <- sprintf("%06s", df2$raw_date) # 解析+格式转换 df2$formatted_date <- format(as.Date(df2$pad_date, format = "%m%d%y"), "%Y%m%d") # 验证类型 class(df2) # 输出:[1] "data.frame"
注意事项
如果你的两位年范围包含19xx的年份,可调整cutoff_2000参数(lubridate方案)或手动偏移年份,避免识别错误。
内容的提问来源于stack exchange,提问作者Yanhao Quan
相关产品推荐
相关产品推荐

