不同格式的数据读入Mata方法总结(二)

2018-01-19 高金凤 爬虫俱乐部 爬虫俱乐部

       有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~喜大普奔~爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

昨天的推文《不同格式的数据读入Mata方法总结(一)》中我们介绍了Mata自身的格式.mmat、stata系统数据以及外部.dta文件读入Mata的方法,今天我们继续介绍如何在Mata中读入外部txt数据。

首先,我们构造一个txt文档:

sysuse auto,clear

keep price mpg rep78 weight

keep in 1/20

outsheet using d:\mywork3.txt,replace

在这里我们用到以下两种方法,将文件mywork3.txt导入至Mata。

fopen()函数

mata:

D1 = fopen("d:\mywork3.txt", "r")

while ((line=fget(D1))!=J(0,0,"")) {

printf("%s\n", line)

}

fclose(D1)

end

注:

fopen()函数:用来打开文件,格式为:fopen(string scalar fn, mode),string scalar fn通常指打开的文件路径和文件名,mode一般设定为“r”,表示文件是已存在并且是可读取的。

fget() 函数:用来逐行读取这个txt文件的数据。

J(n,m,#):产生一个 n 行 m 列且元素都为#的矩阵

printf()函数:它可以将函数结果输出到结果窗口。printf("%s\n", line)语句表示将line的内容输出到结果窗口,%s表示line中的内容是字符,\n是换行符,每输出一次后系统会自动换行。

以上Mata程序表示读取mywork3.txt文件并将保存在矩阵line中,然后用fget() 命令逐行读取这个txt文件的数据同时保证读取的内容非空,并把它保存在矩阵line,接着将其中的内容用printf()函数输出到结果窗口,最后fclose()函数关闭矩阵。

部分结果如下:

cat()函数

cat()函数也是读入.txt文件到Mata矩阵的重要函数,曾在推文《如何在Mata中进行网页分析》中,我们就提及该函数的用法,今天还想告诉大家的是该函数不但可以读取txt格式的数据,还可以读入txt文件中指定行的数据呢,举例如下:

mata:

D2 = cat("d:\mywork3.txt")  //读取mywork3.txt的所有内容

D2=ustrregexra(D2,"\s+"," ")  // 正则表达式替换函数ustrregexra()用来删除空格

D2

D3= cat("d:\mywork3.txt",3,11)  //读取mywork3.txt中第3-11行的内容

D3=ustrregexra(D3,"\s+"," ")

D3

end

得到D2矩阵部分内容:

得到D3矩阵内容:

看到上面矩阵D2的内容,也许大家会疑惑,之前一直强调:在mata矩阵中,数值型观测值不能在字符型矩阵中,字符型数据不能在数值型矩阵中,这里是怎么回事呢?

其实读入的txt文档的所有内容,都已被默认为是字符型,所以得到D2矩阵这样的结果也就不足为奇啦!

注:此推文中的图片及封面均来源于网络!如有雷同纯属巧合!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                        文字编辑/王   明

技术总编/刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.命令sum2docx输出统计量表到docx文件

4.reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word.docx)文档

7.Stata 15Markdown——没有做不到,只有想不到!

8.矩阵和宏的故事

9.shelloutopen anything

10.Putpdf--神奇的转换工具



关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部   

微信扫一扫
关注该公众号

公开收集正在保存拖拽至此处以完成收集私密