查看原文
其他

outfile---数据魔法师

司海涛 Stata and Python数据分析 2022-03-15

哈喽,诸君安。今天我给大家介绍一个数据的魔法师——outfile,我们在之前的推文中介绍了infile的应用,infile是把数据导入到stata中,那么很多时候我们也需要从stata中把数据导出来。而outfile可以利用自己的魔法棒([,options])从stata中导出各种格式的数据,还等什么?跟我一起欣赏outfile的魔法表演吧!

outfile的语法结构如下:


每一个魔法师都有一个魔法棒,那么outfile的魔法棒就是[,options]。为了方便大家快速的认识outfile,我在这里举一个简单的例子,我们以stata系统数据auto.dta 为例。假设我们要把这个数据导出来,为了方便观察我们只保留部分变量以及前10个观测值:

打开导出的数据:


魔法1:解除80字符限制


我们发现导出的文件中,每一行没有结束就自动换行了,这是因为outfile导出的数据默认每一个观测值每一行只能包含80个字符,这不符合我们平时对数据存储的一种习惯,所以可以借助[,wide]选项来解除这一限制。

outfile using d:/outfile魔法一.txt,wide replace


我们看一下原始数据

我们发现原始数据是有变量名称,但是outfile导出的数据中,是没有变量名称的。那么我们以后使用这个数据时,可能会不太方便。怎么办呢?且看下文分解。


魔法2:导出字典格式的数据


我们知道用infile读入数据时,需要用到数据字典,作为infile的孪生兄弟,outfile可以以数据字典的格式导出数据,数据字典格式可能是你组织原始数据的最好方式,它对你的数据有一个详细的描述,你不需要记住变量的顺序、数量、名称。这样方便了你以后认识这个数据。

outfile using d:/outfile魔法2.txt,dict


这样我们就到导出了一个数据字典格式的数据,这时候就可以利用infile直接把这个数据导入到stata中,程序如下以及结果如下:

infile using d:/outfile魔法2.txt,clear




魔法3:导出以逗号分隔的数据


我们还发现outfile导出的数据默认是以空格分隔,但是有一些程序偏好用逗号分隔的数据,这时候可以outfile就可以召唤[,comma]出来了

outfile using d:/outfile魔法3.txt,comma



魔法4:导出没有数值标签的数据


在这组数据中,foreign是一个数值变量,但是它有一个数值标签,如果现在我们需要通过其他程序处理这个数据,首先我们得保存这个数据,可是其他程序能识别所保存的数据吗?答案是否定的,大多数的程序只能识别纯文本的数据,例如text editor产生的数据。而这种特殊格式的数据只有stata能识别,怎么办呢?outfile的一个强大的功能就是能把stata中的数据以纯文本的格式导出来,从而可以被其他程序识别和处理。当然如果你不想要数值标签,outfile也可以帮助你,借助[,nolabel]选项。

outfile using d:/outfile魔法4.txt,nolabel wide

这样foreign就不在显示数值标签了!


魔法5:导出没有双引号的数据


如果你不想要数据中字符串的双引号,outfile也可以帮你解决,此时借助[,noquote]

outfile using d:/outfile魔法5.txt,noquote wide


这里值得注意的是,无论什么时候,用outfile导出一个日期格式的变量,导出之后都为字符串格式。比如,我们从指数2001年1月的交易数据,并利用outfile导出数据。

use


数据导入成功后,观察整个数据集的信息,我们发现日期的存储类型为整数型,显示格式为%td。


导出数据并显示结果,如图:

我们发现,变量date的原始存储类型为整数型,但被outfile导出之后变成了一个字符串。




outfile的这场魔法表演到了这里基本上结束了,是不是很精彩呢?outfile可以导出多种格式的数据,总有一款适合你!outfile,应有尽有!outfile你值得拥有!

说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场,点赞打赏,且随心意。今朝点滴,让我们更进一步;他年涌泉,更好的文章给更好的你。

(编辑 @梅洁瓷傲)




那些让你具有高手气场的黑科技:

1.免费事件研究,一片片从邮局寄来

2.分时数据,从此唾手可得

3.天路——chinafin与cntrade命令

4.谈恋爱不如stata

5.“裤裤擦擦”“霹雳咔嚓”“噗啦啦啦”滴破壳

6.爬虫俱乐部周末送大礼——chinagcode提取中文地址经纬度

7.【有问必答】用循环语句提高数据统计效率

8.众里寻她千百度,synth命令来帮助!

9.不仅是文件搬家,还可以读网——copy命令

10.I have a Stata, I have a python




此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:xueyuan19920310@163.com

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。



长按关注呀~




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

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