Stata数据读入——打开方式不同?
本文作者:冀思慧,中南财经政法大学金融学院
本文编辑:魏若芙
技术总编:方一卓
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程、Stata基础课程、Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~
使用sysuse命令,sysuse可以读入Stata自带的数据库,通过sysuse dir
我们可以查看可供调用的数据,下面我们以auto数据为例。
我们可以通过以下命令对auto中的所有数据进行读取:
sysuse auto, clear
br //浏览数据
sysuse auto, clear
keep price mpg length //price mpg length为变量名称
br
保留特定行数的数据:
sysuse auto, clear
keep in 1/10 //保留1-10行
br
保留具有某些特征的数据:
sysuse auto, clear
keep if foreign==1
br
我们可以创建一个data.dta存入G盘,然后通过use命令进行读入:
clear all
cd g:/数据读入 //将默认文件地址更改为G盘数据读入文件夹
sysuse auto
keep in 1/10
save data.dta,replace
use data.dta,clear
br
当本地数据文件为Stata格式时,用use命令直接调入:
clear all
use "g:/数据读入/data.dta",clear //引号里面为文件路径
br
当文件为文本文档形式时,我们可以使用其他的命令读入数据,其中文本文档常见的分隔方式有:空格分隔、逗号分隔、制表符分隔、固定宽度的文本文档,这里我们介绍的命令有infile、infix、import delimited。下面我们以一次包含数学、英语的期中成绩为例,来了解各个命令的使用。(Note:本文中用到的文件,大家有需要的话,可以后台回复“数据读入文件”进行获取欧~)
infile
自由格式
自由格式指通常用空格、制表符等分隔的文本文档,我们通过如下命令进行数据读入:
infile str4 name age math english using file2.txt, clear //变量为字符型时,用str指明
固定格式
用infile导入固定格式的数据,必须要使用数据字典,每读入一个变量,数据字典就需要增加一行,这种方法在之前的推文《infile,你这是要搞事情啊!》中进行了详细的介绍,这里不再进行赘述。
b. infix
infix主要用于读入固定宽度的数据,下面我们来了解两种不同宽度数据的读入方式。
变量单行排列,如图:
infix str10 name 1-4 age 15-16 math 30-31 english 34-35 using file3.txt, clear
我们可以使用下面的程序进行读入:
clear all
cd g:/数据读入
infix str100 v 1-100 using file4.txt, clear
replace v=v+"!"+v[_n+1] if mod(_n,2)==1 //将偶数行加到奇数行,中间用!进行分隔
keep if mod(_n,2)==1 //保留奇数行
compress //压缩空格
gen name = substr(v,1,4) //将v变量中第一列开始4个字符生成新变量并命名为name
gen age = substr(v,7,2)
gen math = substr(v,11,2)
gen english = substr(v,14,2)
drop v //删除掉v变量
br
以上两种读入方式的输出结果均为:
c. import delimited
在Stata13之后,insheet已经不是Stata的官方命令,目前,insheet命令已经被import delimited所取代。import delimited相较于其他的数据读入命令,具有一定的优点,例如其突破了infix和infile读入固定宽度(最大长度为524,275个字符)的限制、可以自定义分隔符等。
不指定分隔符时,Stata默认以逗号或制表符分隔:
import delimited name age math english using file1.txt, clear
指定分隔符时
如果文本是以空格进行分隔的,我们可以通过delimiter(" ")定义空格为分隔符。
import delimited name age math english using file5.txt, clear delimiter(" ")
如图,以下文件中是以$$作为分隔符的:
我们使用以下程序进行读入,其中asstring命令表示将字符串作为整体视为一个分隔符。比如,delimiters("first",asstring)是将“first”整体作为一个分隔符,而delimiters("first") 会将“f”、“i”、“r”、“s”、“t”都作为分隔符。
import delimited name age math english using file6.txt, delimiter("$$",asstring) clear //asstring表明$$整体为分隔符,否则认为$$两个字符分别为分隔符
以上程序的输出结果为:
webuse这个命令可以从Stata的网站上获取数据,首先我们使用help dta_manuals来查看可供使用的手册,里面包含有命令介绍与配套的数据库,这些数据库都可以由webuse直接调入。
webuse lifeexp.dta, clear
use http://www.stata-press.com/data/r15/lifeexp, clear
通过以上学习,相信大家都学会了基本的数据读入,如果想要读入excel文件,大家可以读一读我们之前的推文,希望大家都可以有所收获!
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
数据类型——Dict、Set与Frozenset简析
Stata小贴士之外部命令安装路径
有一种夏天叫做宫崎骏的夏天
换装术|多个Excel文件如何一键转为dta格式
【基础篇】Python可变对象与不可变对象
Stata绘图系列——细节掌控绘图区域!
4月A股的收官战之概念板块哪家强?解放双手!你必须要会的两个命令—inlist & inlist2
【基础篇】字符串之判断方法
Stata绘图系列——让你的直方图随心所欲
【爬虫篇】湖人无缘季后赛,球迷如何回应
客官,要来份四象限图吗?
Python实现简繁体转换
Stata与Python交互方法及数据传递
“青铜”爬“王者”
留下想要的变量,你会几种方法?
【爬虫篇】基于selenium爬取美团评论
双标的莱万——足球无关政治?!
Stata处理重复值:duplicates
It's time to send a flower to your lover! 2021各省GDP新鲜出炉爬虫实战-采集全国各省疫情数据
log——为你的操作保驾护航
一行代码教你玩转emoji
票房遇冷的春节档口碑冠军丨《狙击手》影评分析
学习丰县,营造良好营商环境!
大国丢娃图:从川渝到徐州!
丰县“失火”,殃及徐州:股市超跌近30亿!
Unicode转义字符——编码与解码
徐州!徐州!
B站弹幕爬虫——冬奥顶流冰墩墩&雪容融
不会用Stata做描述性统计表?so easy!
丰沛之地:备足姨妈巾
过年啦,用Python绘制一幅属于你的春联吧!
登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。