諸君安!
爬蟲君之前給大家講解過excel文件的讀取與保存方法,詳見如何用 Stata 批量讀取多張工作表的 Excel 文件,其中介紹給大家的命令是import excel,該命令在讀取單個(gè)文件時(shí)表現(xiàn)優(yōu)異,但要讀取多個(gè)文件就需要借助宏來進(jìn)行循環(huán)。
今天爬蟲君介紹給大家一個(gè)更簡便的命令xls2dta,本命令需從ssc下載安裝,在處理多個(gè)excel文件上具有顯著優(yōu)勢,不僅可以讀取保存,還可以進(jìn)行合并等其他操作。
Excel文件批量讀取與合并
比如,爬蟲君現(xiàn)在有4個(gè)excel文件放在E:/桌面/mark文件夾中。
每個(gè)文件都有3張表單,分別有id和mark兩個(gè)變量。
爬蟲君想要將mark文件夾中所有excel文件中的第1和第3張表單中的數(shù)據(jù)轉(zhuǎn)換成dta格式,并合并生成mark.dta文件。
使用命令:
xls2dta,save(E:\桌面) sheet(1 3):import excel using E:\桌面\mark,firstrow
xls2dta,save(E:\桌面\mark.dta, replace):append
save中參數(shù)表示新生成的文件所在路徑,如果不使用該選項(xiàng)則默認(rèn)為當(dāng)前工作路徑;
sheet中的參數(shù)表示所要讀取的表單,如果要讀取所有表單,則可使用allsheets選項(xiàng);
E:\桌面\mark則是所要讀取的文件的路徑,命令會讀取該路徑中的所有xls和xlsx文件,如果要讀取單個(gè)Excel文件則需加上擴(kuò)展名。
第二行命令append默認(rèn)使用第一行命令所轉(zhuǎn)換生成的文件進(jìn)行合并。
也可以不生成中間文件直接合并Excel文件中的數(shù)據(jù),通過using來自定義所要使用的數(shù)據(jù)來源。使用命令:
xls2dta, sheet(1 3) save(E:\桌面\mark.dta, replace) importopts(firstrow):append using E:\桌面\mark
這樣就直接讀取并合并了Excel文件中指定的數(shù)據(jù)。
通過填寫importopts選項(xiàng)可以在細(xì)節(jié)上完善Excel文件的讀取,本次操作填入的firstrow表示將第一行變量記作變量名;
using后接路徑,則會對該路徑下所有的xls和xlsx文件文件進(jìn)行操作。如果要對單個(gè)文件進(jìn)行操作,則需加上擴(kuò)展名。
比如讀取mark2.xlsx文件中所有表單的數(shù)據(jù)并合并,生成文件mark2.dta,使用命令:
xls2dta, save(E:\桌面\mark2.dta,replace) allsheets importopts(firstrow): append using E:\桌面\mark\mark2.xlsx
同樣的,append命令還可以換成joinby和merge對excel文件進(jìn)行合并操作。
新生成文件的其它批量操作
除合并數(shù)據(jù)之外,xls2dta還可以對新生成的文件進(jìn)行其他批量操作。語法為
xls2dta : xeq command
比如,對于新生成的文件,爬蟲君想要把含4位數(shù)的變量id拆成兩個(gè)分別含2位數(shù)的變量,使用命令:
xls2dta,save(E:\桌面) allsheets:import excel using E:\桌面\mark,firstrow
xls2dta : xeq nsplit id,digits(2 2)
如上圖所示,變量拆分成功。
只需在xls2dta : xeq后加上命令即可對轉(zhuǎn)換生成的文件進(jìn)行批量操作,而不加上using或save,本命令會自行讀取保存。
聯(lián)系客服