如何将数字格式日期(如20200119)转换为标准日期格式?
数字格式日期转标准YYYY-MM-DD格式(R语言)
问题场景
现有数值型日期(如20200119)的数据框,需转换为标准YYYY-MM-DD格式。测试数据:
df <- data.frame(c(20200119, 20180718, 20180729, 20150502, 20010301)) colnames(df)[1] = "Dates"
可行解决方案
方法1:基础R as.Date() 函数
先将数值型日期转为字符型,再通过format参数指定原日期格式:
# 针对Dates列转换 df$Dates <- as.Date(as.character(df$Dates), format = "%Y%m%d")
方法2:lubridate包简化处理
使用lubridate包的ymd()函数,可直接识别数值/字符型的年月日格式:
library(lubridate) df$Dates <- ymd(df$Dates)
原方法失败原因说明
as_date(df)/as.Date.numeric(df):直接传入数据框或默认调用数值型转换时,as.Date会把数字当作1970-01-01以来的天数,而非日期编码,结果完全不符合预期。as.Date.factor(df):未指定原日期格式,且直接处理整个数据框而非目标列,导致转换失败。
验证结果
执行转换后,打印数据框可看到标准日期格式:
print(df) # Dates # 1 2020-01-19 # 2 2018-07-18 # 3 2018-07-29 # 4 2015-05-02 # 5 2001-03-01
内容的提问来源于stack exchange,提问作者Li4991
相关产品推荐
相关产品推荐

