mata中的字典——asarray

2018-01-08 王明 爬虫俱乐部 爬虫俱乐部

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

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

诸 君安!谈起英语,相信各路大神都有不同的体验。但对小编来说那就是抹不去的印记,当我还在60分徘徊时,大神已经攀上95分的高峰,向着100分进发,那 我和大神之间都有“一典”,为什么差距这么大呢?因为大神的英语字典在心中,而苦逼的小编却在手中。可谓一典在心,天下我有,还不赶紧和小编一起走进字典 的世界。

我们这里说的字典当然不是英语字典,但是有异曲同工之妙。字典,顾名思义,就是通过关键字查询它的含义。mata中的字典与之类似,每个键对应一个值,使用键可以访问其对应的值。关于键值对的详细信息请见往期推文《十分钟明白——json为何物》、《十分钟理解——Jsonio的键名读取原理》。这里值得注意的是:键值对中,键只能是字符串,而值可以是数字、字符串、数组甚至一个对象。

一个简单的字典

今天早上刚出寝室门,一股寒风迎面吹来,冻的小编瑟瑟发抖,然后小编就点开了今天的天气预报。下面,小编就用mata中的字典储存今天的天气情况。程序如下:

mata

A = asarray_create()

asarray(A, "天气", "中雨转雨夹雪")

asarray(A, "温度", "1/-2℃")

end

运行结果如下:

asarray_create这个命令的用法是创建字典,在这里我们创建了一个叫A的字典。然后我们分别把“天气-中雨转雨夹雪”和“温度——1/-2℃”两个键值对传到A字典中,这里“天气”和“温度”是,“中雨转雨夹雪”和“1/-2℃”是。这样今天的天气情况就进入到我们的mata字典中了,是不是很神奇呢?

访问字典中的值

字典的作用就是随时可以翻看键值对,通过键找到对应的值,接下来小编给大家带来字典的最基础功能。

程序如下:

mata

asarray(A, "天气")

asarray(A, "温度")

end

运行结果如下:

从上图,我们可以看出只要进入mata环境,输入对应的键,字典A就会返回所对应的值。比如,这里输入asarray(A, "天气"),结果显示中雨转雨夹雪,输入asarray(A, "温度"),结果显示1/-2℃。

修改字典中的

人非圣贤孰能无过,要想完美必须不断修改,不断完善。所以修改是必须的。那如何修改mata中字典的值呢?客官别急,小编这就给你慢慢道来。

程序如下:

mata

asarray(A, "天气","中雨")

asarray(A, "天气")

end

运行结果如下:

从上图中,我们可以看出,直接输入相同的键名,然后输入一个新的值,新的值就会覆盖旧值。在这个例子中,“中雨”覆盖了原来的“中雨转雨夹雪”。

删除键-值对

字典是由一个又一个键-值对组成,在实例中,我们经常会需要删除键-值对,来来来,让我们一起删删乐吧!

程序如下:

mata

asarray_remove(A, "天气")

asarray(A, "天气")

asarray(A, "爬虫俱乐部","将爬虫俱乐部进行到底")

asarray_keys(A)

end

 运行结果:

从运行结果我们可以看出:asarray_remove(A, "天气")可以删除“天气-中雨”的键-值对,删除后,asarray(A, "天气")就不显示对应的值了。想在A字典中加入新的键-值对,直接输入asarray(A, "爬虫俱乐部","将爬虫俱乐部进行到底")就行了,字典中就多了“爬虫俱乐部-将爬虫俱乐部进行到底”的键-值对。程序中asarray_keys(A)是非常有用的命令,可以把所有的键都显示出来。从结果我们可以看出键-值对“天气-中雨”已经被删除了。

字典的小例子

相信通过前面的介绍,大家都知道什么是字典里中的键-值对以及键-值对的基本用法,那如何遍历字典中所有的值呢?观众老爷们不用急,小编这就给你慢慢道来。

程序如下:

mata

B = asarray_create()   

asarray(B, "爬", 6)     

asarray(B, "虫", 60)      

asarray(B, "俱乐部",  600)

sum = 0

for (loc=asarray_first(B); loc!=NULL; loc=asarray_next(B, loc)) {

    sum = sum + asarray_contents(B, loc)

}

sum

sum/asarray_elements(B)

end

运行结果如下:

这里用到几个常用的命令,解释如下:

asarray_first(B): 表示字典B中第一个键-值对所在位置。

asarray_next(B, loc): 表示字典B中下一个键-值对所在位置

asarray_contents(B, loc): 表示字典B中位置“loc”所对应的值

asarray_elements(B): 表示字典B中键-值对的总个数

这个程序的核心是“for (loc=asarray_first(B); loc!=NULL; loc=asarray_next(B, loc)) {”,相信很多小伙伴一开始接触这行命令时都感到晕晕的,其实这里loc是循环算子,NULL表示空。这一行命令的意思是从字典B的第一个键-值对开始,直到最后一个键-值对时停止。

从运行结果来看,我们把所有的键值对都遍历了,把所有的值都加在一起,得到了666,是不是很6呢?学会stata,没有不可能。

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

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

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

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号

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