R語言中財務數據整形:wide <--> long
在R語言中,tidyr包和data.table分別提供了相應的長寬數據變換的函數。在做資本市場微觀企業數據分析時,尤其財務數據指標(如Wind的數據格式是寬數據),這個兩個包提供的函數友好程度還可以提升。
======================================================================
Stata中直接提供一個reshape就搞定了,並且可以自動分割和命名變數。這個太贊了。
======================================================================
下面分享data.table包提供的函數功能。
這裡直接舉例,不一一交代具體參數了。
1.生成模擬數據
library(data.table)nset.seed(123)nnmarket <- data.table(n stkcd=1:100,n type =sample(c(0,1),100,replace = TRUE),n industry=sample(letters,100,replace = TRUE),n roa2013=runif(100, min = 0, max = 1),n roa2014=runif(100, min = 0, max = 1),n roa2015=runif(100, min = 0, max = 1),n lev2013=runif(100, min = 0, max = 1),n lev2014=runif(100, min = 0, max = 1),n lev2015=runif(100, min = 0, max = 1)n)nhead(market)n
有些資料庫提供的財務數據如上圖一般,是寬數據。在具體分析時需要轉換成長數據。
2.寬變長
上面的方法採用正則表達式來匹配變數。此外上述把變換後因子變數variable改成數值型變數year。這個才是我們想要的結果。否則轉化的結果就是下面這樣了。除了上面的方法以外,還有一個稍微麻煩一點的方法。
paste("roa",2013:2015,sep="")的作用是生成連續的字元向量。這個代碼塊有時候還很有用處的。3.長變寬
這個時候就好辦了。
是不是一切又回到原點,那個最初的market數據集?
======================================================================?? ????上面的setorder(long , stkcd, year)只是虛晃一招,在此處分析中沒什麼作用。
如何有更便捷的變換方法,歡迎交流。
-------------------------------------------------
分享一個鏈接:RStudio發布的R語言與數據分析的系列視頻。
推薦閱讀:
※國際油價大跌背後的資本算盤
※為什麼手機遊戲是中國和美國資本市場相差最大的細分市場之一?是什麼原因導致了看法的不同?
※上市公司的子公司算不算上市公司?
※投行資本市場部的工作日常?
※互聯網金融在多層次資本市場構建中有哪些作用?