2016-11-30 53 views
2

我有一个包含一列V8它由字符串值在此格式的数据帧 -非标准字符串转换日期为日期对象中的R

7/16, 02/11, 5/12 

这些项目的日期,第一个表示七月份在2016年,第二个代表2011年2月,最后代表2012年5月。有时有初始零,其他时间没有。

我想在R中使用as.Date方法来表示这些日期,但我知道这种表示是非标准的和不明确的。

我打算采用编程的方式将CSV文件中的值转换为as.Date可以理解的表示,但它让我感到这是一个常见问题,因此可能会涉及一个较少涉及和更习惯的解决方案。我发现strptime函数,但我不清楚如何使用它,尝试strptime("09/12", format="%m/%y"),但它返回NA

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

回答

3

一种选择是使用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" 
+1

谢谢!为我的目的完美工作。 – Hugo

3

一个可能的解决方法是使用as.yearmon()从动物园包。

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

唯一的缺点是你没有得到一个“Date”对象,而是得到一个“yearmon”对象。

+0

对于只保留原始格式信息的解决方案+1。如果需要,也可以按如下方式转换为Date:'library(zoo); as.Date(as.yearmon(“09/12”,format =“%m /%y”))' – ds440

1

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" 
相关问题