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