温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者:连玉君 (中山大学)
E-Mail: arlionn@163.com
目录
如下是 Stata 连享会 FAQ 邮箱 (StataChina@163.com) 中收到的一个问题:
各位老师好,这个是 python 中 for 循环的一种形式,具体的名字我也不太懂,姑且叫配对循环吧。一般的是 foreach i in
遍历对象 {}
。请问,Stata 有没有那种 foreach i j in
遍历 对象 1 遍历 对象 2{} 这样的设置呢?Stata 里面可以这样子配对循环吗?
list1 = ['a', 'b', 'c', 'd']
list2 = ['apple', 'boy', 'cat', 'dog']
for x, y in zip(list1, list2):
print(x, 'is', y)
# 输出
a is apple
b is boy
c is cat
d is dog
我觉得这种遍历方式其实还蛮必要的,因为很多时候比如循环某个程序,最后要输出个图,图名或者图例要设置吧,但设置图名图例肯定要进行所谓的配对循环,而非嵌套循环。
请老师指教。谢谢
Stata 中似乎没有直接可以实现上述功能的函数或命令。不过我们可以自己编写一个,随后如果有必要,可以封装成一个通用程序。
clear
local s1 "a b c d"
local s2 "apple boy cat dog"
local i = wordcount("`s1'")
forvalues s=1/`i'{
dis ustrword("`s1'",`s') " is " ustrword("`s2'",`s')
}
输出结果如下:
a is apple
b is boy
c is cat
d is dog
补充:
2019/1/7 22:55
老师好,我之前也把同样的问题,问了爬虫俱乐部,他们现在也回复了我,也提了一种方案。
也能达到一样的效果,老师们解决问题的方法都很好,都很值得学习。
clear
foreach x in a b c d{
foreach y in apple boy cat dog{
if index("`y'","`x'")==1{
disp "`x'" " " "is" " " "`y'"
}
}
}
两种方法都能解决这个问题,但 M2 更好一些,使用 index()
函数可以很好地判断字符串中元素的相对位置,使得程序更具通用性。
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD