as.Date继续返回NAs

时间:2016-12-01 10:00:43

标签: r

所以我已经通过堆栈交换答案,我无法解决这个问题

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

2011-12
2012-04
2011-10

etc

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

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

但我总是让NA回来

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

2 个答案:

答案 0 :(得分:4)

我会说as.Date将无法处理当月没有任何一天的值。您可以尝试使用zoo,只要您不介意它作为yearmon类出现:

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

或者,您可以指定一个月中的某一天用作虚拟人物:

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

答案 1 :(得分:1)

编辑:已经有了一个答案而且它是重复的,但我想这个解释对于其他读者来说非常有用,所以我会留下它。

<强>解释

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

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

<强>解决方案

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

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