数据读入|一文读懂用Stata读入不同类型的数据
本文作者:乔昕悦,香港大学经管学院
本文编辑:王玉洁
技术总编:李婷婷
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》、《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦
sysuse dir
我们可以知道sysuse能调用哪些数据(包括Stata本身带有的数据和当前路径下的dta格式的数据)。我们可以通过如下命令选取最经典的auto进行读取:
sysuse auto, clear
2.use
① 读入电脑中已有的.dta文件
myauto.dta
存入E盘的数据读入文件夹,然后通过use
命令可以进行读入:clear
cd E:\数据读入
sysuse auto
save myauto.dta,replace
use myauto.dta, clear
②从网站获取数据
使用use+数据网址可以直接从Stata网站上获取数据。
use http://www.stata-press.com/data/r9/auto.dta
3. webuse
webuse
这个命令可以直接从Stata的网站上获取数据,和上边介绍use+Stata 网站上的数据网址可以达到同样的效果。
webuse lifeexp.dta, clear //或通过use↓
use https://www.stata-press.com/data/r16/lifeexp, clear
大多数情况下我们需要读入的数据并不是.dta格式的,因此需要使用其他的命令,在这里我们考虑.csv和.txt格式的文本文档为大家进行介绍。
常见文本文档的分隔方式分为四种:逗号分隔,制表符分隔,空格分隔、固定宽度的文本文档。在这里我们介绍的命令有insheet, import delimited, infix, infile。
接下来通过一个包含学生的姓名,年龄和大学英语四六级考试的成绩的数据文件来介绍各个命令的使用。(Note:本文中用到的txt、csv、excel文件,大家有需要的话,可以后台回复“数据读入文件”获取噢~)
1. insheet
我们将以逗号分隔的.csv格式文件用文本文档打开,如下图所示:
通过如下程序可以进行读入:
clear
cd E:\数据读入
insheet using comma1.csv, clear
insheet name age CET4 CET6 using comma1.csv, clear //name age等是为了数据读入后有变量名
② 以制表符分隔
下图为用制表符分隔的文本文档:
insheet name age CET4 CET6 using tab1.txt, clear
③ 用空格分隔
下图为用空格分隔的文本文档:
insheet name age CET4 CET6 using space1.txt, clear delimiter (' ')
三种不同分隔方式读入的数据均如下图所示:
2. import delimited
不指定分隔符时,Stata默认以逗号或制表符分隔:
import delimited name age CET4 CET6 using tab1.txt, clear
指定分隔符时,分以下两种情况:
①默认情况下,如果写为:delimiter('djkbg'),则d,j,k,b,g每一个字符都是一个分隔符。
如果文本是以空格分隔的,可以定义空格为分隔符delimiter(' '),程序如下:
import delimited name age CET4 CET6 using space1.txt, clear delimiter (' ')
以%%%.txt为例:如下图所示,%%%.txt文件中我们所需的变量信息是以%%%分隔的。
import delimited name age CET4 CET6 using %%%.txt, delimiter ('%%%', asstring) clear
import delimited name age CET4 using tab1.txt, rowrange(2:4) colrange(1:3) clear
或者:
import delimited name age CET4 using tab1.txt, rowrange(2) colrange(:3) clear
3. infix
infix主要用于读入固定宽度的数据。我们以下面宽度不同的两种文本(fixedwidth1.txt 和 fixedwidth2.txt)来为大家介绍:
如果我们想读入上图所示的fixedwidth1.txt文本文件,程序如下:
infix str7 name 1-7 age 14-15 CET4 19-21 CET6 24-26 using fixedwidth1.txt, clear //name是字符型变量,前面要加str,age和CET4 CET6都是数值型变量
infix 1: str name 1-7 CET4 17-19 CET6 22-24 2: age 1-2 using fixedwidth2.txt, clear
1:
和2:
代表变量name和两次考试成绩的变量在文本文档的第一行,变量age在文本文档的第二行; 4. infile
infile可以处理自由格式(free format)和固定格式(fixed format)的文本文档。
①自由格式
指通常用空格、制表符等分隔的文本文档,我们通过如下命令进行数据读入:
infile str7 name age CET4 CET6 using space1.txt, clear //当变量为字符型时,需用str指明
②固定格式
需要使用dictionary来读取,在之前的推文《 infile,你这是要搞事情啊!》中有详细的介绍,这里就不为大家赘述了。
firstrow:将Excel第一行设置为变量名
cellrange(start):设置表格读取的范围
sheet('sheetname'):读入选定表单
import excel using 成绩单.xlsx, first case(upper) cellrange(A1:C5) clear sheet ('1702')
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!