【數據分析】R|時間格式處理|date format & lubridate
在R之中,我們有時會需要時間的轉換。常常抓到網路資料後,得到的timestamp欄位可能是char或是num的格式,這時候就可以採用內建的as.date或取用lubridate這個package。但在了解怎麼用後面的函數從字串中轉成時間前,得先知道什麼是標準的時間格式,才知道怎麼得到想要的結果。 標準時間格式 class為「POSIXlt」和「POSIXct」 ,包含資料的格式為" %Y-%m-%d %H:%M:%S "。 "年-月-日 時:分:秒" 在日期間以「-」區隔,時間以「:」區隔,兩者以一個空白分隔。 %m 小寫是月(month), %M 大寫是分(Minute) → 時間的格式都是大寫。 我們常用 Sys.time()或now() 來取得執行當下的時間點,可以得到標準格式 "2018-11-09 11:35:06 CST" 。 以我們台灣來講,CST = China Standard Time,也就是常聽到的 中原標準時間 ,是我們這個經度所位在的時區。相對於UTC地球標準時間要加上八小時。即為UTC+8。 UTC = Coordinated Universal Time是像秒一樣的公定標準,格林威治標準時間GMT = Greenwich Mean Time所在時區與該時間相同。 now()之中可以設定時區 → now(tzone = "UTC") 會得到比CST少8小時的結果。 而日期格式較為簡單, class為「Date」 ,取得當天日期則用Sys.Date()。 轉換為日期 首先先看日期的部分,實作上,常碰到的是三種狀況: 長相已經是標準日期(Ex: 2018-11-09),但型別為character 長相是數字(Ex: 17844),型別為numeric 各式長相的時間(Ex: "November 9, 2018"、"09/11/2018"),型別為character 面對這些該如何怎麼解決呢? 解決方法 :as.Date搭配format設定 [1] as.Date("2018-11-09") →"2018/11/09"也...