自打寫R語言以來,我都一直刻意跳過了自己不熟悉的一塊内容,但這個部分又非常重要,那就是時間序列
為啥不寫呢?因為個人感覺不靠譜。知道這世上最大限度使用時間序列分析的領域是哪個麼?——金融、證券,嗯,就是那些磚家說的話聽起來都像f-p-的領域
而且這其中最妙的地方是,當對未來做出預測的時候,大家往往當場是沒有什麼強有力的證據去反駁的,因為時候沒到嘛,但到了預測實現的那個時間點時呢,不管對不對又都沒太大意義了,因為該發生的都已經發生了
但是就算再怎麼不可靠,也擋不住這玩意兒有着強大的市場需求,作為生活在三維世界的人類,似乎大家總是普遍意義上的對時間這個摸不着門道的第四維度充滿了興趣,所以,該扯的dan還是得扯,我除了選擇自己不相信以外好像也沒有其他能做的了
今天不會一上來就直接ar、ma、arima啥的,那些鬼東西我自己還沒啃下去呢,所以先弄個基礎點的,處理日期和時間格式的向量
這裡我想先批評一下那些介紹R軟件的教材,你舉個半天例子都是告訴我怎麼在R裡頭手工建立日期格式的字段有個啥用?處理大量數據的時候有誰靠在R軟件裡頭直接碼字輸入的麼???
導入個帶日期信息的表格先:
read.csv中帶上了參數stringsAsFactors = FALSE,不然導進來一堆因子型看着别扭
看看上頭截圖親們應該可以注意到一個問題,這個表格的最後兩列"過賬日期"和"輸入時間",在讀取後是顯示為文本型的,咱如果要當做日期型來計算,肯定要轉格式,這裡請記住一個重要函數,strptime
這參數看似簡潔,實則要命,先從好解釋的部分開始
參數x是輸入項,tz表示時區,默認空白是指當前時區的意思,這個可以不用管,煩人的部分是當中那節format,沒有默認值必須手打
請記住,這個函數中的format不是指你想把日期轉成什麼格式,而是因為R軟件在面對咱人類各種紛擾複雜的不同的日期表達方式時直接舉了白旗表示投降——我不知道也懶得去識别輸入列的形式,你要想把這列數據當日期或時間信息用你就得負責任滴告訴我你輸入了個什麼格式
先轉日期,咱表格裡的形式是20XX/X/X,就是4位年數 月數 日期,間隔符号斜杠"/"
在R裡頭,這個format是"%Y/%m/%d",請注意區分大小寫,因為小寫的%y指的是兩位數表示的年份
Date <- strptime(Data$過賬日期, "%Y/%m/%d")
然後是時間,%H表示24小時制的小時數(%I表示12小時制),大寫的%M指分鐘,%S為秒
Time <- strptime(Data$輸入時間, "%H:%M:%S")
轉換之後,就可以看到文本型的chr都變成了時間型POSIXlt(這串亂碼我一直都記不住)
完成了這一步,後邊才能進行更多的轉換
而從一種時間型轉成另一個樣子的時間型,用的就不是strptime了,而是函數format
到了format這裡,你會看到裡頭的參數format後頭有了個默認值"空白",因為從這裡開始,R軟件表示我還是可以有一點服務精神的,請告訴我您想要轉成啥格式,我會保質保量的完成任務(并不負責任地給你轉回文本型chr)
這裡唯一能讓人老懷安慰的地方就是R好歹提供了點還算過得去的轉換樣式,這裡列出一部分,還有好多好多請自覺查閱幫助文檔:
%Y 四位年數
%y 兩位年數
%m 兩位月數
%B 完整月名
%b 縮寫月名
——這個要在英文環境下管用,如果是中文環境,月份甭管縮不縮寫都是"X月"
%A 完整星期名
%a 縮寫星期名
%w 數字編号星期幾(從0到6)
——星期名是英文下好使,但中文也能看得到區别,完整的叫"星期X",縮寫"周X"
%d 日期
%j 一年中的第幾天
%F 完整的标準型日期%Y-%m-%d
%H小時-24小時制
%I 小時-12小時制
%M 分鐘
%S 秒數
%p AM/PM
%R 完整時間%H:%M,24小時制
%r完整時間%I:%M:%S %p,12小時制
另外,還有個比較經常搞編程的人會強調的知識點,就是一天的總秒數為86400秒,貌似做延時什麼的會有用的樣子,不過目前我好像用不太着
介紹完畢~
,