【问题标题】:Unable to convert Month-Year string to Date in R无法将月-年字符串转换为 R 中的日期
【发布时间】:2015-11-06 17:57:33
【问题描述】:

我正在使用 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?

格式符号我参考了this table

【问题讨论】:

  • %M 是 i 分钟。 %m 是月份。
  • "%b 此平台上当前语言环境中的缩写月份名称。"并且您必须指定获取Date 的日期。
  • @G.Grothendieck 我在问题中提到的表是错误的表吗?
  • 该函数的第二个参数是日期的格式。你提供了"%M-%Y"。因此,您指出您有一个格式为“MINUTES hyphen 4-digit YEAR”的日期。但这不是您的数据形式。您的格式为“MONTH hyphen YEAR”,因此您需要提供该格式"%m-%Y"
  • 从 R ?strptime 中转到百分比代码的帮助页面。

标签: r


【解决方案1】:

您遇到的问题是您拥有的日期没有日期值。如果没有日期值,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"))

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2021-08-14
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多