1. 前言
在目前工作中,用stata清洗及分析数据,感觉很顺滑。无奈不少同学因为help文件里的英文望而却步。
带着学习和分享的目的,根据工作经验,给大家整理一些常用以及不太常用但很有用的命令,并对该命令的help文件进行有侧重的详解。
2. 命令及获取
import(export) excel
:导入(导出)excel文件,系统自带命令
3. 描述
import excel
: 导入excel数据至stata软件。import excel filename, describe
:显示excel文件中每个sheets(工作表)的数据范围。export excel
:将数据保存为excel文件。
- 上述三个命令可运用于.xls和.xlsx文件。
import excel
和export excel
- 在windows,mac和linux系统上均支持。
- 如果导入和导出的filename没有加扩展名,则默认为.xls.
- 例如,
import excel auto
先检索导入auto.xls,再检索导入auto.xlsx。import excel
限制导入的.xlsx文件大小,不超过40M,如果文件太长,导入时间会较长。
4. 语法
*导入excel文件
import excel [using] filename [, import_excel_options]
*导入excel文件中的部分变量(字段)
import excel extvarlist using filename [, import_excel_options]
*描述excel文件中每个sheets(工作表)的数据范围
import excel [using] filename, describe
*导出数据为excel文件
export excel [using] filename [if] [in] [, export_excel_options]
*保存部分变量(字段)的数据为excel文件
export excel [varlist] using filename [if] [in] [,
export_excel_options]
- [,]:中括号里的为额外选项命令,按需求添加,而添加选项记得加英文逗号,
- filename(文件名):如果语法中只有文件名,则默认文件格式为.dta;如果文件名中有空格,记得用双引号""将该目录名字括起来。
5. 选项
import_excel_options
的选项:
sheet("sheetname")
:添加该选项,导入特定的工作表,工作表名称为sheetname。不添加该选项,默认导入第一个工作表。最短可缩写成sh("sheetname")
。cellrange([start][:end])
:添加该选项,指定导入工作表中的数据范围,例如,cellrange(A1:C23)。最短可缩写成cellra([start][:end])
。firstrow
:添加该选项,指定excel数据中的第一行为变量名。①本选项不能在import excel extvarlist using filename
中使用。②若通过cellrange([start][:end])
指定了导入数据的范围,则加firstrow
后指定数据范围的第一行为变量名。③import excel
会将第一行转为stata有效的变量名(如以A,B,C等命名),原数据内容则变为变量标签。最短可缩写成first
。case(preserve|lower|upper)
:添加该选项,结合选项firstrow
,可以对第一行的英文变量名进行大小写转换。不添加该选项,则默认保持原样。例如,excel中的字段名为Ab,添加选项case(preserve)
后,stata中变量名为Ab,最短可缩写成case(pre)
;添加选项case(lower)
后,stata中变量名为ab,最短可缩写成case(l)
;添加选项case(upper)
后,stata中变量名为AB,最短可缩写成case(u)
。allstring
:添加该选项,强制导入的excel文件中的所有数据都转为字符串型数据。最短可缩写成all
。clear
:添加该选项,使得在导入excel文件前清除现在内存中的数据。local(“locale”)
:结合命令import excel
使用,但不显示在对话框中。添加该选项,指定工作簿使用的语言环境。 可能会在使用扩展的ASCII字符集时需要此选项。此选项对Microsoft Windows无效。 默认语言环境是UTF-8。export_excel_options
的选项:- 主要选项:
sheet(“sheetname”)
:添加该选项,保存excel数据至指定工作表,工作表名称为sheetname。如果名为sheetname的工作表不存在,则新建名为sheetname的工作表。如果不添加该选项,则默认保存至excel文件中的第1个工作表。最短可缩写成sh("sheetname")
。cell(start)
:添加该选项,指定保存的数据开始的位置。若不添加该选项,则默认从第一行第一列开始存数据。sheetmodify
:添加该选项,导出数据至excel时,数据范围外的单元格内容不改变。本选项不能和sheetreplace
或者replace
结合使用。最短可缩写成sheetmod
。sheetreplace
:添加该选项,在导出数据至excel前,将excel的工作表中的内容清除。本选项不能和sheetmodify
或者replace
结合使用。最短可缩写成sheetrep
。firstrow(variables|varlables)
:添加firstrow(variables)
选项,指定导出excel数据的第一行为变量名,最短可缩写成firstrow(var)
。;添加firstrow(varlables)
选项,指定导出excel数据的第一行为变量标签,最短可缩写成firstrow(varl)
。nolabel
:添加该选项,导出excel数据时,数值型数据以数值展示,而不是值标签展示。最短可缩写成nol
。replace
:添加该选项,替换现有的excel文件。本选项不能和sheetmodify
或者sheetreplace
结合使用。- 高级选项:
datestring("datetime_format")
:添加该选项,导出所有日期时间型变量时,以日期时间格式的字符串形式展现。最短可缩写成date
。missing("repval")
:添加改选项,导出excel数据时,将缺失值以 repval 展示,repval自定义,可以是数值也可以是字符串。最短可缩写成miss
。local(“locale”)
:结合命令export excel
使用,但不显示在对话框中。添加该选项,指定工作簿使用的语言环境。 可能会在使用扩展的ASCII字符集时需要此选项。此选项对Microsoft Windows无效。 默认语言环境是UTF-8。
6. 举例
*调入数据auto.dta
webuse auto
*导出数据为auto.xls,将变量名作为第一行的字段名
export excel auto, firstrow(variables)
*导入auto.xls文件数据,同时清除现有内存数据,将第一行作为变量名
import excel auto.xls, firstrow clear
*查看数据情况
describe
*导入auto.xls文件数据,同时清除现有内存数据,将第一行作为变量名,而且导入数据范围为A1:D70,即导入前4列数据
import excel auto.xls, cellrange(:D70) firstrow clear
*查看数据情况
describe
*调入数据auto.dta
webuse auto, clear
*导出数据为auto.xls,不包括变量名
export excel auto.xlsx
*导出指定变量数据至auto.xls,并替换现有auto.xls数据
export excel make mpg weight using auto, replace
7. 菜单
*导入excel
File > Import > Excel spreadsheet (.xls;.xlsx)
*导出excel
File > Export > Data to Excel spreadsheet (.xls;.xlsx)
8. 存储的结果
import excel filename, describe
存储如下结果:
r(N_worksheet)
:excel文件中的工作表的数量r(worksheet_#)
:excel文件中第#个工作表的名字r(range_#)
:excel文件中第#个工作表的数据范围
9. 补充
- 导入和导出文件可考虑第一次通过点击菜单实现,保存好语法,之后再用就可以直接修改了。
- 实例:
- 批量导出数据
*按照yxmc(院校名称)字段情况,导出不同院校的数据
*将变量yxmc的值存至暂元level中
levelsof yxmc,local(level)
*循环level中的值
foreach x of local level {
*preserve和restore之间的操作可恢复
preserve
*保留yxmc为level中的值的数据
keep if yxmc=="`x'"
*导出excel数据至D:\excel\分院校-`x'.xlsx,其中,`x'为level中的值,并且将变量标签作为第一行字段名,数值型数据以数值展示,而不是值标签。
export excel using D:\excel\分院校-`x'.xlsx, firstrow(varlabels) nolabel
restore
}
- 一次性导入多个Excel
*将目标文件夹设定为工作路劲
cd D:\excel
*用暂元files提取所有后缀为xlsx的文件名
local files: dir "." file "*.xlsx"
*循环files,按原文件名保存成dta文件
foreach file in `files'{
import excel using "`file'", firstrow case(lower) clear
save "`file'.dta",replace
}