今天我們來討論時間和日期在R裡面如何運用吧
就如同哥布林們常說的一句話time is money, friend
首先是日期,當我們輸入指令sys.Date()將會出現今天的日期
透過class的指令我們可以知道這是一種叫Date的資料
today <- Sys.Date()
today
[1] "2018-11-13"
class(today)
[1] "Date"
另一個是時間的指令,注意到這邊的time是小寫的,不同於上面的Date是大寫的
而這是一種叫POSIX的資料種類
now <- Sys.time()
now
[1] "2018-11-13 20:27:51 CST"
class(now)
[1] "POSIXct" "POSIXt"
那假設我們需要設定某個特定的日期,又該如何做呢?
以2018-11-05,這邊要注意的是別忘了"引號
someday <- as.Date("2018-11-05")
someday
[1] "2018-11-05"
class(someday)
[1] "Date"
我們同樣也可以交換位置,預設的話是YYYY-mm-dd
因此若我們需要將位置調換的話,我們就需要告訴R排列的方式
記得Y這邊年的部分需要用大寫
as.Date("05-11-2018", format = "%d-%m-%Y")
[1] "2018-11-05"
時間的話就得用POSIXct這個指令,作法如同上面
但記得須將所有的都輸入
as.POSIXct("2018-11-13 20:42:19")
[1] "2018-11-13 20:42:19 CST"
而日期也是可以計算的假如我們將之前的日期資料相減,則可以得知相差的天數
或是將日期+1
today
[1] "2018-11-13"
someday <- as.Date("2018-11-05")
today - someday
Time difference of 8 days
today + 1
[1] "2018-11-14"
而時間的部分則是用最小值,秒數
因此若我們將今天+1則會加上一秒
now
[1] "2018-11-13 20:27:51 CST"
now + 1
[1] "2018-11-13 20:27:52 CST"
同樣的原理也可以運用到時間上
唯一要注意的是若是時間間隔過高的話將會以days, hours, minutes來做四捨五入
sometime <- as.POSIXct("2018-11-10 20:42:19")
now
[1] "2018-11-13 20:27:51 CST"
now - sometime
Time difference of 2.989956 days
要知道這邊日期是如何來做相減的,這邊得知日期的最初為1970-01-01是起始日期
因此假設我們將日期unclass可以得到的數字為2
oneday <- as.Date("1970-01-03")
unclass(oneday)
[1] 2
透過以上我們可以得知數字及日期的用法