by DevinChu, 2019/06/22, NanJing
?
前言:readWind1.0 版本發(fā)布以來,有很多小伙伴發(fā)來郵件咨詢,主要提出的問題有:是否可以一次讀取excel中的多個(gè)變量呢?是否可以讀取指定excel的sheet表呢?是否可以讀取csv格式的原始數(shù)據(jù)呢?是否可以不用分割數(shù)據(jù)集并且提高數(shù)據(jù)讀取轉(zhuǎn)換速度呢?為何xls后綴的excel不能識(shí)別呢等問題。為解決這些問題,進(jìn)一步提高 readWind 的適用性,我們升級(jí)了 readWind 背后的程序代碼,這一次的升級(jí)在解決上述問題的同時(shí),也大大提高了運(yùn)行效率,歡迎各位小伙伴使用。
WIND 數(shù)據(jù)庫是大家在科研路上常用的數(shù)據(jù)下載利器,但遺憾的是從 WIND 上下載的 EXCEL 數(shù)據(jù)文件通常是橫向排列的 (即 Stata 用戶熟悉的 wide 格式),需要我們手工整理或采用 reshape 等命令進(jìn)行轉(zhuǎn)換后才能滿足 Stata 的分析要求。出于這一需求,我們?cè)?2018 年 12 月發(fā)布了新命令:readWind,用以將寬型 (wide) 的上市公司財(cái)務(wù)數(shù)據(jù)高效地轉(zhuǎn)換為長(zhǎng)型 (long) 的面板數(shù)據(jù)。為進(jìn)一步提高 readWind 的適用性,我們對(duì)背后的代碼進(jìn)行了升級(jí),主要增加了以下功能:(1)同時(shí)讀取一張表中的多個(gè)變量,不僅僅局限于1個(gè)變量;(2)能夠讀取 xls 、xlsx 或 csv 格式的原始數(shù)據(jù);(3)能夠強(qiáng)制將原始數(shù)據(jù)轉(zhuǎn)換為 string 格式,并且在讀取 csv 格式數(shù)據(jù)時(shí)支持自定義編碼;(4)能夠讀取 Excel 中指定 sheet 表中的變量數(shù)據(jù);(5)增加了日度頻率的數(shù)據(jù)支持。
1. 下載安裝 readWind2.0命令
第一步:在 Stata 中安裝 github 命令
在 Stata 的 command 框口中輸入如下命令自動(dòng)下載外部命令 github。該命令用于搜索、安裝 Github 上發(fā)布的 Stata 外部命令 (若已經(jīng)安裝 github 命令,可以忽略此步):
net install github, from("https://haghish.github.io/github/")
第二步:使用 github 命令安裝 Github 上的命令
在 Stata 的 command 框中輸入下面的代碼,耐心等待安裝完成:
github install zhbsis/readWind
上述命名安裝完成中你會(huì)發(fā)現(xiàn)你的 c 盤 ado 文件夾中的 r 文件夾里面多了readWind這個(gè) ado 命令,這就是將 Wind 數(shù)據(jù)終端中下載的 excel 數(shù)據(jù)轉(zhuǎn)換為能夠直接進(jìn)行實(shí)證分析的 long 型數(shù)據(jù)格式的命令啦?。。?/p>
第三步:readWind對(duì) Wind 下載的原始數(shù)據(jù)格式有什么要求呢?
只要你的原始數(shù)據(jù)排版格式滿足下面的要求,都是可以通過readWind讀入到 Stata 中的:

第四步:如何調(diào)用執(zhí)行readWind命令呢?
調(diào)用readWind只需在 Stata 的 command 命令框輸入下述命令行即可:
readWind 變量名稱(至少1個(gè)變量) , key(原始數(shù)據(jù)集名稱) timeType(時(shí)間類型) t0(樣本起始時(shí)間) tn(樣本結(jié)束時(shí)間) [type(原始數(shù)據(jù)集格式) sheet(第幾個(gè)sheet表) encoding(csv格式下的自定義編碼) tostring]
其中,
- 變量名稱需要和數(shù)據(jù)集中變量的順序?qū)?yīng),建議以英文命名;
- 原始數(shù)據(jù)集名稱就是從 Wind 下載下來的數(shù)據(jù)集名字,建議以英文命名;
- 時(shí)間類型是指下載下來的樣本是年度,季度還是月度數(shù)據(jù),所以它的取值是 y/q/m/d ;
- 樣本起始時(shí)間,比如你選擇從1995年1月開始下載,那么這個(gè) t0 里面就寫 1995m1 ,如果是 1995 年第 1 季度開始,那就寫 1995q1 ,如果是年度數(shù)據(jù)以年為變化單位那就寫 1995 ;
- 樣本結(jié)束時(shí)間,比如你的數(shù)據(jù)是截止到 2018 年 12 月,那么這個(gè) tn 里面就寫 2018m12 ,如果是2018年第4季度結(jié)束,那就寫 2018q4 ,如果是年度數(shù)據(jù)以年為變化單位那就寫 2018 ;
-
type(原始數(shù)據(jù)集格式) sheet(第幾個(gè)sheet表) encoding(csv格式下的自定義編碼) tostring這4個(gè)選項(xiàng)分別對(duì)應(yīng)讀取的原始數(shù)據(jù)集的類型,type中的取值有 xls、xlsx 和 csv ;sheet是指定讀取的 excel 中的第幾個(gè) sheet 表,取值為 1、2、....、n,默認(rèn)情況下是 sheet1 ;encoding設(shè)定了讀取樣本的編碼格式,這個(gè)命令建議在讀取 csv 格式的原始數(shù)據(jù)時(shí)使用,通常有 utf8、utf16、GBK等類型;tostring強(qiáng)制將讀取的樣本數(shù)據(jù)轉(zhuǎn)換為字符類型,以避免在讀取 csv 格式樣本時(shí)出現(xiàn)的字符和數(shù)值沖突情況。
2. readWind2.0 的使用案例
舉個(gè)栗子:我從 Wind 上下載了 A 股上市企業(yè) ROE 的數(shù)據(jù)(ROE.xlsx),格式如下:
ROE.png
那么只需要在 stata 中輸入下述命令:
/* 改變工作路徑到ROE文件夾下 */
cd "ROE所在的文件夾"
/* 讀取ROE.xls中的數(shù)據(jù),只有ROE一個(gè)變量 */
readWind ROE, key(ROE) timeType(q) t0(1995q1) tn(2017q4)
如果這個(gè) excel 的后綴是 xls,則輸入:
/* 改變工作路徑到 ROE 文件夾下 */
cd "ROE所在的文件夾"
/* 讀取 ROE.xls 中的數(shù)據(jù),只有 ROE 一個(gè)變量 */
readWind ROE, key(ROE) timeType(q) t0(1995q1) tn(2017q4) type(xls)
如果這個(gè)原始數(shù)據(jù)的后綴是 csv,則輸入:
/* 改變工作路徑到ROE文件夾下 */
cd "ROE所在的文件夾"
/* 讀取ROE.xls中的數(shù)據(jù),只有ROE一個(gè)變量 */
readWind ROE, key(ROE) timeType(q) t0(1995q1) tn(2017q4) type(csv) encoding(GBK) tostring
如果原始數(shù)據(jù)集 ROA_ROE.xlsx 中含有多個(gè)變量,比如既有ROA又有ROE,那么則輸入:
/* 改變工作路徑到 ROA_ROE文件夾下 */
cd "ROA_ROE所在的文件夾"
/* 讀取 ROA_ROE.xls 中的數(shù)據(jù),有 ROA 和 ROE 兩個(gè)變量 */
readWind ROA ROE, key(ROA_ROE) timeType(q) t0(1995q1) tn(2017q4)
等命令運(yùn)行完就可以在 Stata 中看到漂亮規(guī)范的數(shù)據(jù)格式啦:

