附件:

  • 【附件内容】do文件,PDF笔记,录屏
  • 【附件下载】链接:https://pan.baidu.com/s/1F6-cMjF3dqIvNdhjoZ7jMw?pwd=vnwl

本文是教对象Stata系列视频的笔记内容。对应视频与配套代码请见下方链接,笔记内容请见分割线下方。

视频合集

bilibili视频链接

配套代码链接


​ 在 Stata 中,通过使用循环语句,可以简化有规律、高度重复的命令。

  循环语句的命令包括 foreachforvalues 两个。foreach 可以对指定列表进行循环,该列表可以是数列,也可以是文本列表。forvalues 可以对数列进行循环。

一、foreach 命令: 列表循环

  基础语法:

1
2
3
foreach lname {in|of listtype} list {
commands referring to `lname'
}

  其中,lname 表示循环指示符,of listtype 中的列表类型有 localglobalvarlistnewlistnumlist 五种。

  foreach 命令需要使用大括号:

  • 左大括号和 foreach 出现在同一行
  • 大括号后面只能添加备注
  • 下一行输入要运行的命令
  • 右大括号必须单独占一行

1. local - 局部宏

1
2
3
4
5
6
7
8
9
** 局部宏
local grains "rice wheat corn rye barley oats"
foreach x of local grains {
display "`x'"
}
** 等效命令
foreach x in rice wheat corn rye barley oats {
display "`x'"
}

2. global - 全局宏

1
2
3
4
5
6
7
8
9
** 全局宏
global money "Franc Dollar Lira Pound"
foreach y of global money {
display "`y'"
}
** 等效命令
foreach y in Franc Dollar Lira Pound {
display "`y'"
}

3. 三种 list 类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
** varlist 变量列表
foreach v of varlist pri-rep t* {
sum `v'
}
** 等效命令
foreach v in pri-rep t* {
sum `v'
}

** newlist 新变量列表
foreach var of newlist z1-z20 {
gen `var' = .
}
** 等效命令
forvalues n=1/20 {
gen z`n' = .
}

** numlist 数列
foreach n of numlist 1 4/8 13(2)21 103 {
display `n'
}

二、forvalues 命令: 数值循环

  基础语法:

1
2
3
forvalues lname = range {
commands referring to `lname'
}

  forvalues 命令需要使用大括号:

  • 左大括号和 forvalues 出现在同一行
  • 大括号后面只能添加备注
  • 下一行输入要运行的命令
  • 右大括号必须单独占一行

  其中,数值范围 range 可以写成4种形式:

  • a/b : 在 \([a,b]\) 之间循环,循环间隔为1,循环方向是\(a \to b\)
  • a(d)b : 在 \([a,b]\) 之间循环,循环间隔为\(d\),循环方向是\(a \to b\)
  • a c to b : 在 \([a,b]\) 之间循环,循环间隔为\(c-a\),循环方向是\(a \to b\)
  • a c : b : 在 \([a,b]\) 之间循环,循环间隔为\(c-a\),循环方向是\(a \to b\)

  示例:

1
2
3
4
5
6
7
8
9
10
11
forvalues i=4/8 {
display `i'
}

forvalues i=13(2)21 {
display `i'
}

forvalues i=5 8 : 21 {
display `i'
}

  ‍