日期

要将变量强制转换为日期,请使用 as.Date() 函数。

> x <- as.Date("2016-8-23")
> x
[1] "2016-08-23"
> class(x)
[1] "Date"

as.Date() 函数允许你提供格式参数。默认为%Y-%m-%d,即年 - 月 - 日。

> as.Date("23-8-2016", format="%d-%m-%Y") # To read in an European-style date
[1] "2016-08-23"

格式字符串可以放在一对单引号或双引号内。日期通常以各种形式表达,例如:d-m-yyd-m-YYYYm-d-yym-d-YYYYYYYY-m-dYYYY-d-m。这些格式也可以用 / 替换 - 来表示。此外,日期也以表格形式表示,例如“1986 年 11 月 6 日”或“1986 年 11 月 6 日”或“1986 年 11 月 6 日”或“1986 年 11 月 6 日”等。该 as.Date() 函数接受所有这些字符串,当我们提到的字符串适当的格式,它总是在输出的形式 YYYY-m-d 的日期。

假设我们有一个 %d-%m-%Y 格式的日期字符串 9-6-1962

#
# It tries to interprets the string as YYYY-m-d
#
> as.Date("9-6-1962")
[1] "0009-06-19"       #interprets as "%Y-%m-%d"
> 
as.Date("9/6/1962")
[1] "0009-06-19"       #again interprets as "%Y-%m-%d"
>
# It has no problem in understanding, if the date is in form  YYYY-m-d or YYYY/m/d
#
> as.Date("1962-6-9")
[1] "1962-06-09"        # no problem
> as.Date("1962/6/9")
[1] "1962-06-09"        # no problem
> 

通过指定输入字符串的正确格式,我们可以获得所需的结果。我们使用以下代码指定 as.Date() 函数的格式。

格式代码 含义
%d
%m
%y 一年两位数
%Y 年份为 4 位数
%b 在 3 个字符中缩写为月份
%B 本月的全名

请考虑以下指定 format 参数的示例 :

> as.Date("9-6-1962",format="%d-%m-%Y")
[1] "1962-06-09"
>

参数名称格式可以省略。

> as.Date("9-6-1962", "%d-%m-%Y")
[1] "1962-06-09"
>

有时,在写日期时会使用缩写为前三个字符的月份名称。在这种情况下,我们使用格式说明符%b

> as.Date("6Nov1962","%d%b%Y")
[1] "1962-11-06"
>

请注意,日期字符串中的成员之间没有'-''/'或空格。格式字符串应与输入字符串完全匹配。请考虑以下示例:

> as.Date("6 Nov, 1962","%d %b, %Y")
[1] "1962-11-06"
>

请注意,日期字符串中有逗号,因此格式规范中也有逗号。如果格式字符串中省略了逗号,则会产生 NA%B 格式说明符的示例用法如下:

> as.Date("October 12, 2016", "%B %d, %Y")
[1] "2016-10-12"
>
> as.Date("12 October, 2016", "%d %B, %Y")
[1] "2016-10-12"
> 

%y 格式是系统特定的,因此应谨慎使用。此功能使用的其他参数是 origintz (时区)。