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

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

昨天的推文中我们介绍了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("%sn", line)

}

fclose(D1)

end

注:

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

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

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

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

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

部分结果如下:

cat()函数

cat()函数也是读入.txt文件到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矩阵这样的结果也就不足为奇啦!

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

文字编辑/王 明

关于我们

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

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。返回搜狐,查看更多

阅读 ()
平台声明
该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。