日期

要將變數強制轉換為日期,請使用 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 (時區)。