将非标准字符串日期转换为R中的日期对象



i具有一个数据框架,其中包含列V8,该列由此格式组成的字符串值 -

7/16, 02/11, 5/12

这些项目是日期,第一个代表2016年7月的月份,第二个代表2011年2月,以及2012年5月的最后一个代表。有时是最初的零,有时没有。

我想使用as.Date方法在R中表示这些日期,但我知道此表示形式是非标准和模棱两可的。

我将求助于将CSV文件中的值转换为as.Date所理解的表示形式,但令我震惊的是,这一定是一个常见的问题,因此可能会有一些较少的涉及和更惯用的解决方案。我找到了strptime功能,但我不清楚如何使用它,尝试了strptime("09/12", format="%m/%y"),但它返回NA

如何将这些非标准字符串值转换为日期对象?

一个选项是使用as.Date(),并假设您的每个月都发生在本月的第一个月:

> strDates <- c("07/16", "02/11", "05/12")
> dates <- as.Date(paste0("01/", strDates), "%d/%m/%y")
> dates
[1] "2016-07-01" "2011-02-01" "2012-05-01"

一个潜在的修复程序是使用动物园软件包中的as.yearmon()

> as.yearmon("09/12", format ="%m/%y")
[1] "Sep 2012"

唯一的缺点是您没有得到"日期"对象,而是获得"年yearmon"对象。

lubridate软件包可能对此有用:

library(lubridate)
strDates <- c("07/16", "02/11", "05/12")
as.Date(parse_date_time(strDates, orders="%m/%y"))
[1] "2016-07-01" "2011-02-01" "2012-05-01"

最新更新