R語言中財務數據整形:wide <--> long

在R語言中,tidyr包和data.table分別提供了相應的長寬數據變換的函數。在做資本市場微觀企業數據分析時,尤其財務數據指標(如Wind的數據格式是寬數據),這個兩個包提供的函數友好程度還可以提升。

======================================================================

Stata中直接提供一個reshape就搞定了,並且可以自動分割和命名變數。這個太贊了。

具體的數據結構如下。

哈哈,惱火的是你這樣要變換的變數命名需要有連貫性,不然Stata就識別不出來。(這個時候需要用renvars來批量轉換變數名稱)

======================================================================

下面分享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語言與數據分析的系列視頻。


推薦閱讀:

國際油價大跌背後的資本算盤
為什麼手機遊戲是中國和美國資本市場相差最大的細分市場之一?是什麼原因導致了看法的不同?
上市公司的子公司算不算上市公司?
投行資本市場部的工作日常?
互聯網金融在多層次資本市場構建中有哪些作用?

TAG:R编程语言 | 数据分析 | 资本市场 |