从Mata到Stata的又一新方法——st_store函数

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

        有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

        喜大普奔~爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

在往期推文《听说你想知道st_view函数的用法》《听说你想知道st_data函数的用法》中, 我们介绍了Mata函数st_view和st_data,这两个函数都是提取Stata 当前内存的数据到Mata中。其中,当我们改变函数st_view生成的矩阵时,相应Stata内存的数据也会改变,间接地实现了Mata与Stata的 连接,今天给大家介绍另外一个函数st_store,它也可以实现将Mata矩阵导出至Stata。

举例子:

mata:

mata clear   //清空mata内存

mata stata sysuse auto,clear  //在mata中读入stata系统数据 

A=st_data(.,("price"))       //生成矩阵A是变量price的所有观测值

st_store(., st_addvar("float","newvar"),A)     //函数st_addvar在stata内存增加了一个新的浮点型变量newvar,函数st_store将A矩阵所有的值赋给变量newvar

end

list newvar in 1/10, sep(0)  //列出变量newvar的前10个观测值

需要注意的是,当在mata中导入stata的系统数据auto时,相应的stata中也已经导入了auto数据。

结果如下:

上面的例子只实现了将Mata矩阵中一列观测值导出至Stata中,那如果我们需要导出多行观测值该怎么实现呢?

01

在这里,我们用到两种方法进行介绍,首先来看第一种,输入如下命令:

mata

mata clear   //清空mata内存

mata stata sysuse auto,clear  //在mata读入stata系统数据

mata stata drop make   //在mata中删除变量make的观测值

B=st_data(.,.)       //生成矩阵B是所有变量的所有观测值

st_store(.,st_addvar("float",("x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11")),B)

end

list x* in 1/10, sep(0)

在上面程序中,我们删除了变量make,是因为一个Mata矩阵中不能同时包含数值型和字符型的观测值,同时也要注意的是,在Mata中使用Stata的drop命令,对应的Stata数据集中的变量make也被删除了。

得到结果:

02

第二种方法则是用到Mata中的for循环,输入命令如下:

mata

mata clear   //清空mata内存

mata stata sysuse auto,clear  //在mata读入stata系统数据

mata stata drop make  //在mata中删除变量make的观测值

C=st_data(.,.)       //生成矩阵B是所有变量的所有观测值

for(i=1;i<=11;i++)

        st_store(.,st_addvar("float","x"+strofreal(i)),C[.,i])  //函数strofreal将数值型的循环算子变为字符型, 函数st_addvar在stata内存增加了浮点型的新变量,其中变量名的前缀都是x,而且函数st_store将C矩阵所有的值赋给这些新变量。

end

list x* in 1/10, sep(0)

同样也得到相同的结果:

当然,在数据窗口我们可以看到在原来stata数据集的基础上多了变量x1-x11,如下所示:

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

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

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过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分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部   

微信扫一扫
关注该公众号

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