R语言中将dataframe内yyyymm格式字段转换为Date类问题
R语言年月格式数据转Date类返回NA的解决方案
错误原因
as.Date() 要求输入必须包含年、月、日三个维度的日期信息,你现有数据只有年、月两个维度,没有指定具体日期,R无法完成解析因此返回NA。
解决方法
你可以根据自己的需求选择以下任意一种方案:
- 方案1:基础函数实现,补全当月1日信息后转换
# 给年月数据拼接当月1日,再按格式解析 dates <- as.character(data$date) # 若原始列为因子类型,需先转字符 data1 <- as.Date(paste0(dates, "01"), format = "%Y%m%d")
- 方案2:用已加载的lubridate包快速转换
lubridate包的ym()函数专门适配年月格式的输入,会自动补全每月1日生成Date类结果:
library(lubridate) data1 <- ym(data$date)
- 方案3:保留年月格式,使用适配时间序列的yearmon类型
如果不需要具体日期,仅需保留年月维度做时间序列分析,可转为zoo包的yearmon类型,xts包完全兼容该类型:
library(zoo) data1 <- as.yearmon(as.character(data$date), format = "%Y%m") # 后续需要转回Date类时可直接调用as.Date,默认转为当月1日 # data1_date <- as.Date(data1)
内容的提问来源于stack exchange,提问作者Julia Wensauer
相关产品推荐
相关产品推荐

