无法将月份-年份字符串转换为R中的日期格式

7
我正在使用as.Date将字符串Aug-2002转换为表示2002年8月的日期对象,或者如果必须指定日期,则为2002年8月1日。请注意,此方法仅适用于月份和年份的转换。

但是

> as.Date(c('07-2002'), "%M-%Y")
[1] "2002-11-06"

> as.Date(c('Aug-2002'), "%b-%Y")
[1] NA

为什么第一行代码会将日期转换为不同的月份和日期?而第二行代码是“NA”?
我参考了此表中的格式符号。

enter image description here


%M 表示分钟。%m 表示月份。 - G. Grothendieck
"%b 在此平台上以当前语言环境为准的月份缩写名称。" 你必须指定日期来获取一个 Date - Roland
@G.Grothendieck,我在问题中提到的表格是错误的吗? - Nyxynyx
该函数的第二个参数是日期格式。您提供了"%M-%Y"。因此,您指示您有一个以“分钟-4位数年份”形式表示的日期。但这不是您数据的形式。您的数据是以“月份-年份”形式表示的,因此您需要提供该格式"%m-%Y" - Pierre L
在R中,使用?strptime命令可以打开百分号代码的帮助页面。 - G. Grothendieck
1个回答

13

您遇到的问题是您拥有的日期没有日期值。 没有日期值,format="%m-%Y"将无法在as.Date中工作。 以下选项将解决这些问题:

as.Date(paste0('01-', c('07-2002')), format="%d-%m-%Y")

library(zoo) #this is a little more forgiving:
as.yearmon(c('07-2002'), "%m-%Y")
as.yearmon(c('Aug-2002'), "%b-%Y")

as.Date(as.yearmon(c('07-2002'), "%m-%Y"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接