查看原文
其他

从Excel到Stata的“摆渡车”——import excel命令

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:李   虎,中南财经政法大学统计与数学学院

本文编辑:赵冰洁

技术总编:余术玲

爬虫俱乐部云端课程

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营在不久前已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!   

1、前言

在日常学习和工作中,我们接触的很多数据都是使用Excel文件存储的,如果想要使用Stata进行数据分析,我们首先就需要将Excel工作表导入到Stata中。这个时候,就该我们的import excel命令“粉墨登场”了。

2、import excel命令的语法

import excel是我们经常使用的命令,也是Stata中相对来说比较简单的命令,我们可以使用help import excel命令来查看一下它的基本语法:

import excel [using] filename [, import_excel_options]

  • 其中,import excel为命令主体,不可省略;

  • using用于指定使用的文件,导入整个数据集时可以省略;

  • filename为导入的Excel文件名;

  • import_excel_options为基础命令上添加的选项,具体选项如下表所示:

选项解释
sheet("sheetname")指定加载的工作表sheet
firstrow将第一行作为变量名
clear清除内存中的数据
cellrange([start][:end])指定加载的Excel单元格区域
case(preserve|lower|upper)以默认/小写/大写形式读取变量名
allstring[("format")]将所有数据导入为字符串类型
locale("locale")当使用扩展的 ASCII 字符集可能需要此选项,默认UTF-8

3、import excel命令的应用

在介绍了import excel命令的相关语法之后,我们将通过一些简单的案例来实际使用import excel命令,以便大家能够更快掌握import excel命令的用法。

(1)加载Excel工作表

在我的电脑D盘的数据文件夹下有一个名为test(后缀.xlsx)的Excel文件(可通过后台回复test获取),这个Excel文件里有auto、driving和states三个工作表(sheet),如果我想要将auto这张工作表的数据导入到Stata中,那么我就可以使用如下的一行命令:

import excel "D:\数据\test.xlsx", sheet("auto") firstrow clear
  • 其中,import excel后面紧跟我们的文件路径,如果Excel文件是放在当前工作路径下的话(cd命令可以更改当前工作路径),就可以不加文件路径,只加一个文件名就可以了。

  • sheet选项是用来指定加载的工作表的,因为这个Excel文件里有auto、driving和states三个工作表(sheet),你如果不告诉Stata你想要加载的是哪个工作表的话,那Stata也会很懵逼的,它会傻傻地默认打开这个Excel文件里的第一个工作表。当然,如果你的Excel文件里只有一个工作表,你就可以不加sheet选项,但是,如果你的Excel文件里有多个工作表,并且你想要加载的不是第一个工作表,那么你就一定要加sheet选项。

  • firstrow选项表示的是将第一行作为变量名,建议大家在Excel表中就使用英文变量名。

  • clear表示清除内存中的数据。

打开数据编辑器,我们就会惊喜地发现Excel工作表导入成功了:

sheetfirstrowclear是三个我们最常使用的选项,下面给大家介绍import excel命令的一些其他选项:

  • cellrange选项是用来指定加载的Excel单元格区域,如果我们只想加载工作表的前8行、前8列的数据,也就是从A1单元格到H8单元格,那么你就可以在逗号后面加上cellrange(A1:H8)

import excel using "D:\数据\test.xlsx", sheet("auto") firstrow clear cellrange(A1:H8)

  • case()选项是用来设定读取变量名时的大小写格式的,括号中可以填入preserve、lower和upper。其中,preserve是默认选项,会保持变量名的大小写格式,Excel中是小(大)写,读取进来就是小(大)写。lower是将变量名中的所有字母变成小写字母,upper是将变量名中的所有字母变成大写字母。如果说我个人非常喜欢用大写字母命名,那么就可以加一个case(upper)选项。

import excel using "D:\数据\test.xlsx", sheet("auto") firstrow clear case(upper)

如下图所示,变量名都变成大写了:

  • allstring选项是将所有数据导入为字符串类型,加了这一选项后,读取进来的数据都会变成“飘红”的字符串。

import excel using "D:\数据\test.xlsx", sheet("auto") firstrow clear allstring

(2)加载Excel工作表中的部分变量数据

有的时候工作表太过庞大,我们只想加载工作表中的某几列数据,那么就可以考虑使用import excel extvarlist命令,将extvarlist替换为你想要加载的变量名就好了。例如,我只想加载auto工作表中的make、mpg、weight和price四个变量的数据,那么我就可以运行如下命令:

import excel make mpg weight price using "D:\数据\test.xlsx", sheet("auto") clear

运行结果如图所示,这个功能有一个问题就是无法添加firstrow选项,将第一行作为变量名,所以读取进来数据会“飘红”,当然它是可以添加cellrange选项来加载工作表指定区域的,所以就看大家是否需要啦。

(3)描述Excel文件的内容

这个功能其实我们很少会用到,在import excel后加上一个describe,Stata就会描述这个Excel文件里的内容。

import excel "D:\数据\test.xlsx", describe

运行结果如图所示:

Stata告诉我们在test这个Excel文件里有auto、driving和states三张工作表,auto这张工作表的范围是从左上角A1单元格到右下角的L75单元格,driving这张工作表的范围是从左上角A1单元格到右下角的BD1201单元格,而states这张工作表的范围是从左上角A1单元格到右下角的U52单元格。

(4)导入一个Excel文件中的多个工作表

我的test.xlsx文件中有auto、driving和states三个工作表(sheet),如果我想要将这三个工作表都导入到Stata中,大家会怎么做呢?一种思路可能就是一个一个导入,但是如果是5个、10个、20个乃至更多的话,那么一个一个导入就很麻烦,这个时候循环语句的优势就显现出来了。

local sheets "auto driving states"
foreach x of local sheets {
  import excel "D:\数据\test.xlsx", sheet(`x') firstrow clear
  save `x'.dta,replace
}

运行结果如图所示:

首先,我们要定义一个暂元sheets来存储我们的sheet名,然后写一个循环去遍历每一个sheet名,使用import excel命令加载每一个工作表的数据,并且使用save命令将数据以dta格式保存在当前工作路径下。这样,三个工作表就都导入成功了,如果后面想要调用某个工作表数据的话,就只需使用use命令+文件名就好了。





对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐

光阴十载,见证了《经济研究》中的“高被引”

利用tushare获取股票数据

         在Python中实现Stata的stack功能

这些年,经管类C刊都在研究什么?

Seminar | 眼见为实吗?高管面部可信度、审计师任期与审计费用

Seminar | 恐怖袭击与CEO薪酬

代码补全,主题更换,Jupyter Notebook原来可以这样用?

【爬虫实战】“双十一”微博热搜实时跟进

Stata中的数值型变量分类神器--recode

fs命令——我们的小帮手

【邀请函】听说你还在为处理表格头大?

用stack取代excel的数据重整操作吧

  日期数据处理

         Seminar | 委托贷款:打开中国影子银行的黑匣子

         Seminar | 电话会议中的"non-answer"  

        Python 爬虫必杀技:XPath

         面对相对路径和绝对路径的分岔口,你选对了吗?        空间数据可视化之spmap命令         快速计算两地距离——geodist命令介绍        Seminar | CFO:努力影响财务信息环境吗?         Seminar | 企业层面成本加成的测算
关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存