日期
要将变量强制转换为日期,请使用 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-yy
或 d-m-YYYY
或 m-d-yy
或 m-d-YYYY
或 YYYY-m-d
或 YYYY-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
格式是系统特定的,因此应谨慎使用。此功能使用的其他参数是 origin 和 tz (时区)。