You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言zoo包yearmon转换日期时生成NA值的解决方法

解决R语言中月份年份字符串转日期出现NA的问题

问题原因

出现NA结果,通常是因为as.yearmon默认无法正确解析你这种Apr-18格式的日期字符串(英文月份缩写-两位年份),或者你的R环境区域设置(locale)不是英文,导致无法识别英文月份缩写。

解决方案

方法1:使用zoo包并指定格式参数

在as.yearmon中明确指定日期格式,让函数精准解析字符串:

library(zoo)
# 将var2转换为日期格式,指定格式为"%b-%y"(英文月份缩写-两位年份)
my_df$var2_date <- as.Date(as.yearmon(my_df$var2, format = "%b-%y"))

方法2:用base R原生函数(无需额外包)

给日期字符串补充一个具体日期(比如每月1号),再用as.Date解析:

# 拼接"-01"得到完整日期字符串,按格式解析
my_df$var2_date <- as.Date(paste0(my_df$var2, "-01"), format = "%b-%y-%d")

方法3:临时切换区域设置(针对非英文locale环境)

如果是系统locale为中文导致无法识别英文月份,可以临时切换为英文环境:

# 保存当前locale设置
old_locale <- Sys.getlocale("LC_TIME")
# 切换为英文locale
Sys.setlocale("LC_TIME", "English")
# 执行日期转换
my_df$var2_date <- as.Date(as.yearmon(my_df$var2))
# 恢复原locale设置
Sys.setlocale("LC_TIME", old_locale)

验证结果

执行任意方法后,查看转换后的数据集:

my_df
#   var1   var2  var2_date
# 1   10 Apr-18 2018-04-01
# 2   20 May-18 2018-05-01
# 3   15 Jun-18 2018-06-01

此时就能正常用于绘图:

plot(my_df$var2_date, my_df$var1, type = "l")

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:25:03