Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中将非标准字符串日期转换为日期对象_R_Date - Fatal编程技术网

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

在R中将非标准字符串日期转换为日期对象,r,date,R,Date,我有一个数据帧,其中包含一列V8,该列由以下格式的字符串值组成-- 这些项目是日期,第一个代表2016年7月,第二个代表2011年2月,最后一个代表2012年5月。有时有初始零,有时没有 我想使用as.Date方法在R中表示这些日期,但我知道这种表示是不标准和不明确的 我打算以编程方式将CSV文件中的值转换为表示形式,该表示形式可以被理解为.Date,但让我吃惊的是,这一定是一个常见问题,因此可能有一个涉及较少且更惯用的解决方案。我找到了strtime函数,但不清楚如何使用它,尝试了strtim

我有一个数据帧,其中包含一列V8,该列由以下格式的字符串值组成--

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

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

我打算以编程方式将CSV文件中的值转换为表示形式,该表示形式可以被
理解为.Date
,但让我吃惊的是,这一定是一个常见问题,因此可能有一个涉及较少且更惯用的解决方案。我找到了
strtime
函数,但不清楚如何使用它,尝试了
strtime(“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"
>标准日期
[1] "2016-07-01" "2011-02-01" "2012-05-01"

一个潜在的修复方法是使用zoo包中的
as.yearmon()

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

唯一的缺点是,您没有得到“Date”对象,而是得到了“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"
库(lubridate)

谢谢你!就我的目的而言,这是一个完美的解决方案,+1只保留原始格式的信息。如果需要,也可以按如下方式转换为日期:
library(zoo);as.Date(as.yearmon(“09/12”,format=“%m/%y”))
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"