【问题标题】:as.Date keeps on returning NAs [duplicate]as.Date 继续返回 NA [重复]
【发布时间】:2017-04-15 21:48:43
【问题描述】:

所以我已经通过了一些 Stack Exchange 的答案,但我无法解决这个问题。

我在数据框中有一列,其日期为如下字符

2011-12
2012-04
2011-10

etc

我想将这些转换为我尝试过的日期格式,如下所示:

Tots$DatesMerge<-as.Date(Tots$DatesMerge,"%Y-%m")

但我总是得到 NA 的回复。

我试着像here 那样做,但没有快乐。我真的不确定我做错了什么。

【问题讨论】:

  • This 应该可以工作,或者上面的答案。

标签: r


【解决方案1】:

我会说as.Date 将无法处理一个月中没有日期的值。你可以试试zoo,只要你不介意它作为yearmon类出现:

library( zoo )
as.yearmon( Tots$DatesMerge )

或者,您可以指定一个月中的某一天作为虚拟对象:

as.Date( paste0( Tots$DatesMerge, "-15" ) )

【讨论】:

  • 您是在抄袭 cmets 中提到的重复帖子中的答案吗?
  • 没有。对不起,如果它看起来那样。在看到 cmets 之后,我查看了这些链接,是的,它们是相似的。当有有效的答案时,事情就是这样发展的。
  • 抱歉,我是不是因为我的答案恰好与 cmets 中链接的答案相同,而有人认为我在“作弊”而投了反对票?
  • 我猜@rosscova 回答了它并且它有效,所以得到了积分。
  • 不是我,但很明显你得到了反对票,因为你回答了一个愚蠢的问题。
【解决方案2】:

编辑:已经有一个答案,而且是重复的,但我想这个解释对更多的读者有用,所以我会留下它。

说明

这来自 R 中的文档,"Dates are represented as the number of days since 1970-01-01, with negative values for earlier dates"

因此,在 R 中,日期取决于年、月和日,或者至少是一个表示从或到 1970-01-01 的跨度(以天为单位)的整数。因此,R 中的基本 Dates 包无法将格式为年和月的数据转换为日期,因为没有日期。

解决方案

因此,如果您使用 base R package,您可以选择提供一天用于转换您的数据。

Tots$DatesMerge <- as.Date(paste0(Tots$DatesMerge,"01"),"%Y-%m-%d")

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 2021-05-03
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多