002 Stata数据导入与导出 您所在的位置:网站首页 stata怎么导出日志 002 Stata数据导入与导出

002 Stata数据导入与导出

2023-08-24 06:05| 来源: 网络整理| 查看: 265

平时学习中我们经常会面对各种格式的数据,如.dta .txt .csv .xls .xlsx等。不同的数据格式,有不同的方法。

直接输入:input .dta:sysuse、use 、webuse、save .txt :import delimited、export delimited、infile、outfile、infix、fileread()、insheet、outsheet .csv:import delimited、export delimited、insheet、outsheet .xls与.xlsx:import excel、export excel 1.直接输入数据 clear input str20 name age str6 sex //输入字符型变量需要定义字节长度 "A.Doyle" 22 male "Mary Hope" 37 female "Guy Fawkes" 48 male end list 2.dta文件 clear *1.系统自带dta文件 sysuse auto, clear save myauto.dta, replace *2.电脑中已有的dta文件 use myauto.dta, clear replace mpg = 1 in 1 save myauto.dta, replace *3.从网络中获取数据 webuse lifeexp.dta, clear //从stata网站上获取数据 save lifeexp.dta, replace 3.文本文件 *以分隔符分隔的文本文件 *1.insheet insheet using score.csv, clear //变量没有变量名 insheet name age test1 test2 using score.csv, clear //设置每个变量的变量名 insheet using score.txt, clear //以制表符分隔的文件 insheet using score1.txt, clear //空格分隔的文件,需要转换 insheet name age test1 test2 using score1.txt, clear delimiter(" ") //用delimiter参数把空格定义为分隔符

Description insheet reads into memory from a disk a dataset that is not in Stata format. insheet is intended for reading files created by a spreadsheet or database program. Regardless of the creator of the file, insheet reads text (ASCII) files in which there is 1 observation per line and the values are separated by tabs or commas. Also the first line of the file can contain the variable names. 即,insheet只适用于逗号或者制表符分隔的数据。如果遇到空格分割的,需要进行转换。

*2.outsheet outsheet using score2.txt, replace shellout score2.txt outsheet using score2.txt, noquote replace //使用noquote选项删除字符型变量的引号 shellout score2.txt outsheet using score2.txt, noquote noname replace //使用noname选项不导出变量名 shellout score2.txt

shellout -- Opens documents and their programs from inside Stata. 可以使用 ssc install outreg2 安装shellout

*3.import delimited import delimited name age test1 using score.txt, rowrange(2:4) colrange(1:3) clear //rowrange colrange设置读入的行列范围 import delimited name age test1 using score.txt, rowrange(2) colrange(:3) clear //从第2行到最后,从首列到第3列 *第一种转码方法 clear //注意1:转码前要清空内存中的数据 copy "http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/600018.phtml"temp.txt,replace unicode encoding set gb18030 //原网页是gb2312,gb18030是gb2312的扩展 unicode translate temp.txt, transutf8 //将文件转成utf8 注意2:转码的文件前面不能加路径 unicode erasebackups, badidea //删除备份文件,避免后续冲突 但应慎用,特别是对于dta文件 *第二种转码方法 import delimited using temp.txt, encoding("gb18030") import delimited using temp.txt, encoding("gb18030") delimiter("b1.ak;UI", asstring)clear //通过delimiter的asstring选项将字符串整体作为分隔符

import delimited 相比insheet而言,可以实现转码,分隔符的多样化指定。

*4.export delimited sysuse auto, clear export delimited using auto.txt, replace //和outsheet功能基本相同,但是导出的字符变量默认是没有引号 export delimited using auto.txt, quote replace shellout auto.txt *固定宽度的文本文件 infix str5 name 1-5 age 7-8 test1 9-10 test2 11-12 using score3.txt, clear //字符串的长度上限是str2045,如果超过了就需要用strL copy "http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/600018.phtml"temp.txt,replace infix strL v 1-100000 using temp.txt, clear *第三种转码方法 replace v = ustrfrom(v,"gb18030",1) 4.txt文件读入与导出 *4.txt文件读入与导出 fileread()函数 clear tempname handle file open `handle' using 吃瓜俱乐部.txt, write replace file write `handle' "范冰冰和李晨离婚了"_n file write `handle' "宋慧乔和宋仲基离婚了"_n file write `handle' "将吃瓜进行到底" file close `handle' shellout 吃瓜俱乐部.txt insheet using 吃瓜俱乐部.txt, clear import delimited using 吃瓜俱乐部.txt, encoding("utf-8") clear infix str50 v 1-30 using 吃瓜俱乐部.txt, clear

需要注意,对于import delimited不添加encoding("utf-8"),会出现乱码。

encoding("encoding") specifies the encoding of the text file to be read. The default is encoding("latin1"). Specify encoding("utf-8") for files to be encoded in UTF-8.

clear set obs 1 gen v = fileread("吃瓜俱乐部.txt") //fileread()函数将文本文档内容读入到一个单元格里 set obs 2 gen v = fileread("吃瓜俱乐部.txt") //两行重复

fileread()的应用场景:比如相对上市公司公告做文本分析。

5.excel文件读入与导出 *1.单个文件的一个sheet import excel using 利润表.xls, first case(lower) clear //将第一行设为变量名,并以小写字母形式显示变量 import excel using 利润表.xls, first case(lower) clear sheet("2009") import excel using 利润表.xls, first case(lower) clear sheet("2010") *2.单个文件的多个sheet import excel using 利润表.xls, describe //给出该表内所有sheet的信息 return list forvalues i=1/`r(N_worksheet)'{ dis "this is `r(worksheet_`i')'" import excel using 利润表.xls, first case(lower) sheet(`r(worksheet_`i')') clear save 利润表_`i', replace } *将每个子表单独保存为dta文件 clear forvalues i = 1/`r(N_worksheet)'{ append using 利润表_`i' } save 利润表.dta, replace *3.读入特定的范围 import excel using 利润表1.xls, describe import excel using 利润表1.xls, cellrange(A3:F12) clear //读入A3到F12 import excel using 利润表1.xls, cellrange(A2) first clear //从A2读到最后 import excel using 利润表2.xls, cellrange(A2) first clear drop in 1 destring _all, replace //单位在下载时没有删除,可以读入后删除第一行,然后将字符型转为数值型 *4.导出excel sysuse auto, clear export excel using auto.xlsx, replace //直接导出 export excel using auto1.xlsx, replace first(variables) //导出第一行为变量名 export excel using auto2.xlsx, replace first(varlabels) //导出第一行为变量标签 export excel using auto.xlsx, cell(B2) sheet("newsheet", replace) first(variables) //将内容导出到newsheet中,从B2单元格开始导出数据

注:涉及数据,可搜索公众号“皮壹侠”,回复"002数据处理"

参考资料: 【爬虫俱乐部】精通Stata之数据整理



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有