美文网首页stata小小白
007 Stata循环:forvalues

007 Stata循环:forvalues

作者: 凡有言说 | 来源:发表于2019-07-16 10:00 被阅读1次

Stata中的循环有三类:

  • while循环
  • foreach循环
  • forvalues循环
    其中,foreach和forvalues都可以看作是while循环的变种。两者的区别在于foreach跟的对象可以是宏、变量名和文件名等,而forvalues跟的必须是数字。

最后我们介绍 forvalues 循环

        forvalues lname = range {
                Stata commands referring to `lname'
        }

    where range is

                                                    #1(#d)#2      meaning #1 to #2 in steps of #d     
                                                    #1/#2         meaning #1 to #2 in steps of 1      
                                                    #1 #t to #2   meaning #1 to #2 in steps of #t - #1
                                                    #1 #t :  #2   meaning #1 to #2 in steps of #t - #1

    The loop is executed as long as calculated values of `lname' are < #2, assuming that #d > 0.

    Braces must be specified with forvalues, and

        1.  the open brace must appear on the same line as forvalues;

        2.  nothing may follow the open brace except, of course, comments; the first command to be executed must appear on a new line;

        3.  the close brace must appear on a line by itself.

*示例1
clear
set obs 100
gen x1 = rnormal()
gen x2 = rnormal()
gen x3 = rnormal()
gen x4 = rnormal()
gen x5 = rnormal()

forvalues i = 1(1)5 {
    disp ""
    disp ""
    disp "T-test: the mean of variable x`i' is 0"
    ttest x`i' = 0
}

*示例2
clear
cap mkdir C:\Users\Van\Desktop\download\paper
cd C:\Users\Van\Desktop\download\paper

forvalues i = 26068(1)26072 {
    cap copy https://www.nber.org/papers/w`i'.pdf w`i'.pdf, replace
    while _rc != 0 {
        disp "w`i'下载失败,10秒后重新下载"
        sleep 10000
        cap copy http://www.nber.org/papers/w`i'.pdf w`i'.pdf, replace
    }
disp "w`i'下载完成"
}

此处解释下cap和_rc。cap有两个作用:一是不显示结果,类似于qui,二是即使所在行的命令有问题也可继续执行后续命令。_rc是stata运行cap命令时生成的一个系统标量,如果命令未出错,则_rc值为0,且该命令执行;若该命令出错,则_rc值为对应的错误代码,且该命令不执行。

参考资料:
官方帮助文档
【爬虫俱乐部】精通Stata之数据整理
stata 编程里 开头的capture 是什么意思?

相关文章

网友评论

    本文标题:007 Stata循环:forvalues

    本文链接:https://www.haomeiwen.com/subject/umyvkctx.html