数据读入|一文读懂用Stata读入不同类型的数据
本文作者:乔昕悦,香港大学经管学院
本文编辑:王玉洁
技术总编:李婷婷
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》、《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦
导读
一、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")
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
简述递归
OpenCV库——轻松更换证件照背景色800万年薪!还有谁?!
千古伤心词人,词伤几何?
去哪儿网攻略爬取——跟我一起去大理吧
"有你才有团"——Stata爬取王者荣耀英雄海报
如何获取衡量股民情绪的指标?|东方财富股吧标题爬虫
利用Python构建马科维茨有效边界
rangestat,让统计量灵活滚动起来!
听说这样做立项成功率更高哦
如何处理缺失值?这一篇搞定!
善用dataex命令,高效沟通你我他
大数据下的大学分数线排行榜,快来围观!
《觉醒年代》—带你回到百年前
用Stata画的三维图很奇怪怎么办?
如何随机生成满足特定数据特征的新变量?
爬取无法翻页网页——自然科学基金项目及可视化
爬取京东评论数据进行情感分类
Stata与音乐之间的酷炫连接
这些年,爬虫俱乐部走出的博士们!看这里,近五年各校高被引论文上榜名单!
高校经管类核心期刊发文排行榜
疯狂的科研创新加速器——Stata!
可盐可甜,“粽”有所爱,快来pick你最爱的粽子吧!
好玩有趣的手绘图形库——cutecharts
爬虫实战|摩尔庄园微博话题讨论
一季度财报出炉,哪些公司最烧钱?
一季度财报出炉,哪些公司最赚钱?
技能篇 | 图片合并大法
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。