楼主: crystaling
151811 57

[学习心得] 将Excel文件数据导入STATA的方法之比较   [推广有奖]

  • 0关注
  • 11粉丝

硕士生

62%

还不是VIP/贵宾

-

威望
0
论坛币
4381 个
通用积分
48.3171
学术水平
38 点
热心指数
40 点
信用等级
28 点
经验
2931 点
帖子
193
精华
0
在线时间
149 小时
注册时间
2005-5-3
最后登录
2023-12-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

将Excel文件数据导入STATA的方法之比较


     这一点可能也是大家在实证研究中遇到的最常见的问题,一般找来的数据都是excel文件,但是要做计量肯定要导入到STATA中去。可能大多数菜鸟最常见的办法就是直接复制粘贴了,简单明了,不需要任何技术,但潜在的问题是如果数据比较多,拉框选择还是一件很麻烦的事情,有些数据在excel中可能是显示小数点后两位,但实际储存的并不止这么多。如果是复制粘贴了,可能只粘贴过去小数点后两位,这样就损失了一部分精度。因此我不太推崇这种方法,就我的经验来看,直接调用STATA的内部数据导入命令会更好,起码不会丧失精度。STATA数据导入的命令有以下几种,下面分别加以评析:



      1.insheet using filename, [option]


      这个命令是专门用来导入像excel之类的以电子表格形式存储的数据。在导入之前,首先要把excel文件转存为STATA可以识别的格式。其中我最常用的就是另存为csv逗号分隔符格式。当然一个xls文件中会包含多个sheet,但csv只能保存一个sheet,在另存时excel会提示你是否只另存当前sheet,并且有些功能会丧失掉,不管那么多,毕竟csv只是一个中介,直接点确定就行了。当然你在保存csv时最好让变量名位于第一行,这样STATA就好识别了。然后在STATA中使用insheet读取csv文件,在option中指定为comma告诉STATA你读取的是csv文件。这种方法有个不足在于如果你的数据中包含中文而且里面含有逗号时,stata是无法区别这些逗号是数据中的逗号还是csv文件自己生成的逗号,因而会出现同一个变量的数据被拆散到两个变量的存储空间中。解决的办法是不要用逗号标示分隔符了,在excel中另存为txt(制表符分隔),这样就不会与逗号相混淆了。然后再在insheet命令中在option里指定是tab,就完事了。



      2.infile using filename


      这个infile命令分两类,一种是处理固定格式(fixed format)的txt或raw,另一种是处理自由格式(free format),两类文件的命令语法不太相同,适用的类型也有所不同,当然你在用这个命令里还需要定义一个dictionary,这个dictionary是用来描述数据的组织方式的,需要自己根据要导入的数据文件自己编写代码,然后嵌套到数据文件txt的前面去,或者是单独地存为一个dct文件,并且告诉STATA你要导入的数据在保存在哪里。由于使用起来的学习成本比较高,用得也比较少。在此就不详解了,有需要的请自行help infile。



      3.xmluse


      这个命令首先要把xls文件另存为xml格式,然后用xmluse命令去读取,当然在读取时你也要在option中声明你的xml文件是excel保存的而不是STATA保存的,这样就不会弄错。这个命令相比于前面的insheet的一大好处在于你不必为xls中的每个sheet单独另存为一个文件,而只需要整体另存一个xml格式就行了,在用xmluse时在option中告诉STATA从哪个sheet中的哪些cell中读取数据就行了。但是经本人的经验发现如果你的xls文件中如果有汉字的话,STATA读取后对应的变量会出现乱码,这一点用insheet就不会有这个问题。



      4.odbc


      这个命令是专门读取数据库文件的,并且支持SQL命令,这样如果你的数据比较多的话,可以先用SQL语句进行筛选,然后而导入。当然这个命令也能导向excel文件,只是本人目前还没用过,在此也不详解了。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata EXCEL xcel tata exce Excel

已有 6 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
呼呼兔的胡图图 + 3 + 3 精彩帖子
日新少年 + 1 + 1 + 1 精彩帖子
hustchen2012 + 48 + 24 + 2 + 2 + 2 精彩帖子
statax + 20 + 2 + 1 + 1 精彩帖子
moretc + 20 + 12 + 2 + 2 + 1 精彩帖子
crystal8832 + 24 + 24 + 2 + 2 + 2 精彩帖子

总评分: 经验 + 92  论坛币 + 80  学术水平 + 12  热心指数 + 11  信用等级 + 7   查看全部评分

本帖被以下文库推荐

总算是把自己论坛的ID找回来了
沙发
xingxf 发表于 2014-5-6 19:41:59 |只看作者 |坛友微信交流群
写的挺好的。

再补充一下,Stata12可以用import excel命令直接导入。Stata13中insheet已经被import delimited取代:“ insheet has been superseded by import delimited.  insheet continues to work but, as of Stata 13, is no longer an official part of Stata.”
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
tom_tang626 + 1 + 1 + 1 精彩帖子
crystal8832 + 10 + 10 + 1 + 1 + 1 观点有启发

总评分: 经验 + 10  论坛币 + 10  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

藤椅
crystal8832 学生认证  发表于 2014-5-6 20:16:12 |只看作者 |坛友微信交流群
愿楼主多发好的帖子,谢谢~

使用道具

板凳
╰不滅信念 学生认证  发表于 2014-5-6 20:50:10 |只看作者 |坛友微信交流群
导入什么的代码好长,一般都是鼠标操作
where there is a will there is a way

使用道具

报纸
faeyon 发表于 2014-5-6 22:57:34 |只看作者 |坛友微信交流群
stata与时俱进啊

使用道具

地板
crystaling 发表于 2014-5-6 23:49:51 |只看作者 |坛友微信交流群
╰不滅信念 发表于 2014-5-6 20:50
导入什么的代码好长,一般都是鼠标操作
鼠标操作的不足之处我已经说得很清楚了,而且代码只有一行命令而已,写代码也是STATA的特色了,基本不用鼠标了
已有 1 人评分经验 热心指数 收起 理由
crystal8832 + 10 + 1 分析的有道理

总评分: 经验 + 10  热心指数 + 1   查看全部评分

总算是把自己论坛的ID找回来了

使用道具

7
╰不滅信念 学生认证  发表于 2014-5-7 00:25:08 |只看作者 |坛友微信交流群
crystaling 发表于 2014-5-6 23:49
鼠标操作的不足之处我已经说得很清楚了,而且代码只有一行命令而已,写代码也是STATA的特色了,基本不用鼠 ...
嗯 就像是excel中一连串的鼠标或键盘操作记录下来形成宏方便日后改动一样。
where there is a will there is a way

使用道具

8
xwan5667 发表于 2014-7-24 12:43:34 |只看作者 |坛友微信交流群
xingxf 发表于 2014-5-6 19:41
写的挺好的。

再补充一下,Stata12可以用import excel命令直接导入。Stata13中insheet已经被import deli ...
您好~

看到您关于stata12.0的excel导入stata有个问题想请教,当我直接导入的时候,提示我文件is too big。我该如何解决此问题呢?谢谢

使用道具

9
xingxf 发表于 2014-7-24 17:39:39 |只看作者 |坛友微信交流群
xwan5667 发表于 2014-7-24 12:43
您好~

看到您关于stata12.0的excel导入stata有个问题想请教,当我直接导入的时候,提示我文件is too b ...
你可以将excel另存为csv,用insheet命令导入
已有 1 人评分论坛币 热心指数 收起 理由
crystal8832 + 10 + 1 观点有启发

总评分: 论坛币 + 10  热心指数 + 1   查看全部评分

使用道具

10
xwan5667 发表于 2014-7-25 09:19:33 |只看作者 |坛友微信交流群
xingxf 发表于 2014-7-24 17:39
你可以将excel另存为csv,用insheet命令导入
谢谢!

不知道应该存为那个CSV?

CSV(COMMA delimited)
CSV(Macintosh)
CSV(MS-DOS)

另外,我试着存为第一个,但是我的数据库里面有中文变量,存为CSV就不能显示了。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 20:00