如何在R语言中将"January 2012"格式的字符向量转为日期向量
搞定日期转换返回NA的问题
你的核心问题很直接——日期格式字符串写反了!你的日期是「月份全称 年份」(比如"January 2012"),但你用的%Y %B是「年份 月份全称」的格式,完全不匹配,自然会返回NA。
正确转换代码示例
基础as.Date方法
把格式字符串改成和日期顺序一致的%B %Y即可:
as.Date(df$date, format = "%B %Y")
如果碰到时区警告,手动指定合法时区就能解决:
as.Date(df$date, format = "%B %Y", tz = "GMT")
用lubridate包更省心
先安装并加载lubridate包,既可以指定格式解析,也能用专用函数自动识别:
library(lubridate) # 指定格式解析 as_date(df$date, format = "%B %Y") # 用my()函数自动匹配「月份+年份」格式 my(df$date)
额外说明
%B对应英文月份全称(比如January),%Y对应4位年份,格式字符串的顺序必须和你的日期字符串完全对应,差一点都不行。- 时区警告是系统时区识别出了小问题,手动指定一个合法时区(比如"GMT"或者你当地的时区"Asia/Shanghai")就能消除。
内容的提问来源于stack exchange,提问作者Ali Inayat
相关产品推荐
相关产品推荐

