软件应用 | 一文读懂用Stata读入不同类型的数据
The following article is from Stata and Python数据分析 Author 爬虫俱乐部
作者:乔昕悦,香港大学经管学院
本文转载自公众号:Stata and Python数据分析
导读
一、Stata格式(.dta)
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
二、文本文档(.csv和.txt)
大多数情况下我们需要读入的数据并不是.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,你这是要搞事情啊!》中有详细的介绍,这里就不为大家赘述了。
三、Excel表格(.xls/xlsx)
firstrow:将Excel第一行设置为变量名
cellrange(start):设置表格读取的范围
sheet("sheetname"):读入选定表单
import excel using 成绩单.xlsx, first case(upper) cellrange(A1:C5) clear sheet ("1702")
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
推荐 | 马纯菲
欢迎扫描👇二维码添加关注