有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱
[email protected]
,我们会及时为您解答哟~
喜大普奔~爬虫俱乐部的
github
主站正式上线了!我们的网站地址是:
https://stata-club.github.io
,粉丝们可以通过该网站访问过去的推文哟~
爬虫俱乐部即将推出研究助理供需平台,如果您需要招聘研究助理(Research Assistant or Research Associate),可以将您的需求通过我们的公众号发布;如果您想成为一个RA,可以将您的简历发给我们,进入我们的研究助理数据库。帮我们写优质的推文可以提升您被知名教授雇用的胜算呀!
那些年《铁甲小宝》你还和卡布达一起为了正义和鲨鱼辣椒、蝎子莱莱做斗争,那些年《猫和老鼠》中永远抓不到老鼠的Tom和聪明伶俐的Jerry已经成为了你记忆深处的玩伴。那些年《家有儿女》刘星和夏雪总能让你找到自己的影子;那些年《武林外传》风靡大陆时,男生会一手“葵花点穴手”,却每次都被女生的“排山倒海”打的头破血流;那些年你还记得《王子变青蛙》和《爱情魔发师》中的帅出天际的梦中情人——明道吗?那些年女生会捧着《泡沫之夏》流泪,那时《放羊的星星》仲夏夜之星是最珍贵的宝贝。那些年都是一颗一颗记忆的糖果,那些年是时间的妙不可言。今天给大家带来的时间的故事——
timer
。
在往期推文中
《rmsg-爬虫到底要花多少时间》
我们已经介绍了计算时间的利器——rmsg,但是rmsg没有返回值,很难在后续的程序运用。今天给大家带来的
timer
刚好能解决这个问题。
timer
的作用是:记录和报告程序花费的时间。
接下来给大家带来的是
timer
的语法,千万不要眨眼哦!
从上图中,我们可以看出
timer
有四种用法,分别是
timer clear、timer on #、timer off #
和
timer list[#]
(这里的#号指的是计时器的名称)。
timer clear
:清除所有的计时器。
timer on #
:打开#号计时器。
timer off #
:关闭#号计时器。
timer list [#]
:
timer list
后面不接数字的含义是所有计时器的信息都显示出来,如果
timer list
后面接数字的含义是把对应计数器的信息列出来。
观众老爷们是不是看的不过瘾呢?小编这就给大家上例子。
timer clear
timer on 1
sysuse auto, clear
twoway (scatter mpg weight if foreign==0) ///
(scatter mpg weight if foreign==1 , msymbol(Sh)), ///
title(行驶里程与车重关系) ///
subtitle(11574年美国的国产和进口汽车) ///
ytitle(里程) xtitle(重量) ///
note(数据来自于美国汽车协会) ///
text(35 3400 "散点图") ///
legend(title(图例) label(1 国产车) label(2 进口车)) ///
scheme(s1rcolor)
timer off 1
timer list
运行结果如下:
从图中我们可以看出整个程序运行了0.7810秒,可以看出
timer
这个命令精确到小数点后面四位。也就是0.1毫秒,而rmsg只能精确到小数点后面两位,毕竟有时候失之毫厘谬以千里,我们必须尽量做到精准、精确、精细。 程序的花费间放在r(t1)这个返回值里,如果你后续需要用这个参数,就可以调用它。告诉你一个小秘密,定时器的个数#必须大于等于1小于等于100,要不然会报错的哦!
现在风靡全球的是大数据,人工智能,为什么呢?这是因为程序的出现,程序可以代替人类更好地完成某件繁琐而又重复的工作,程序的神奇之处在于循环,然后并不是循环越多越好,因为循环意味着遍历所有的观测值,这必然会使程序变慢,下面小编就用一个栗子来解释这个问题。
clear all
set obs 500000
gen v = 1
timer on 2
replace v = v + 1
timer off 2
clear
set obs 500000
gen v = 1
timer on 3
qui forvalues i = 1(1)`=_N' {
replace v = v + 1 in `i'
}
timer off 3
timer list
return list
di "Cycle slow `=round(r(t3)/r(t2),.1)' times "
//调用返回值r(t3)、r(t2),计算r(t3)/r(t2),并把结果四舍五入到十分位。
di "Cycle slow `=round(r(t3)-r(t2),.1)' seconds"
//调用返回值r(t3)、r(t2),计算r(t3)-r(t2),并把结果四舍五入到十分位。
运行结果如下:
我们可以看出直接在变量上加一仅仅需要0.016秒,而通过循环对每一个观察值上加一需要2.656s。为了让两个实验更有对比性,小编特意在循环前加了一个qui。让stata安静地运行程序。最后我们发现前者和后者的作用是一样的,但是前者比后者快了2.6秒,前者仅仅是后者的1/166。可见循环并不是万能的,会大大提高运行程序的时间。
在我们童年,时间的故事永远不会缺席。当然每时每刻小编也不会缺席,会和你一起享受stata带给你的回忆。
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。
另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~