Stata:给你的 Dofile 加个开关

发布时间:2020-05-03 阅读 161

编译: 安贤娟(北京信息科技大学)

Source:Running sections of do-files.」  

Stata连享会   主页 || 视频 || 推文

连享会 - Stata 暑期班

线上直播 9 天:2020.7.28-8.7
主讲嘉宾:连玉君 (中山大学) | 江艇 (中国人民大学)
课程主页https://gitee.com/arlionn/PX | 微信版

五一节,跟大家分享一个小玩意,希望各位能在轻松愉快的心情下掌握这个在 dofile 中执行命令的小技巧。

有关 dofile 的设定、语法高亮,以及 Profile 设定等先导内容,请按需点击如下链接之一:

运行 do-file 的一部分

如今 do-files 越来越大、越来越复杂,而有时只是想运行 do 文档中的一部分代码。

为了达到这个目的,我们可以使用 do-switches 模式,简言之,就是在 do 文档开头部分设置几个开关 (取值 0 或 1),进而通过「打开」或「关闭」这些开关来控制哪些代码被执行。

1. 问题

我们都经历过这样一个过程:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
1. 错误!r(xxx)
然后——
1. 修正一小部分代码
2. 在大段的 do-file 中选择一段代码并运行它
(重复上述步骤)

2. 进入 do-switch

思路

非常简单: 如果您想运行代码的某个部分,只需将该部分对应的 local 设置为 1(否则设置为 0 或其他值)。然后,用条件块将要打开或关闭的代码段括起来。

如果你只处理 B 部分,那么你可以将除 B 之外的所有开关设置为 0,然后运行整个 do-file,而无需手动选择其中的一部分。

显然,在第一次进行上述设定时略显繁琐,但后续执行过程会变得很快捷。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line

*-这三行是用来定义「开关」的local A 0 // 第 1 个开关local B 0 // 第 2 个开关local merge 0 // 第 3 个开关

*-Note: 以下是代码主体
if `A' == 1 { * Import and save A}
if `B' == 1 { * Import and save B}
if `merge' == 1 { * Merge A with B and save}

3. 实例展示

在这个简单的例子中,只选择处理导入的 A ,将其设置为 1,Bmarge 开关设置为 0,然后运行全部的 do-file。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
sysuse "nlsw88.dta" global y "wage"       global x "hours tenure married collgrad"   local A     1local B     0local merge 0
if `A' == 1 { reg $y $x }
if `B' == 1 { reg $y $x i.race i.industry}if `merge' == 1 { reg $y $x reg $y $x i.race i.industry}

运行结果展示

结果中只显示了打开开关的 A 部分,而 Bmerge 部分均没有显示。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
if `A' == 1 {.     reg $y $x          
Source | SS df MS Number of obs = 2,227-------------+---------------------------------- F(4, 2222) = 67.82 Model | 8053.67746 4 2013.41937 Prob > F = 0.0000 Residual | 65967.1331 2,222 29.6881787 R-squared = 0.1088-------------+---------------------------------- Adj R-squared = 0.1072 Total | 74020.8106 2,226 33.2528349 Root MSE = 5.4487
------------------------------------------------------------------------------ wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]-------------+---------------------------------------------------------------- hours | .0616148 .0113148 5.45 0.000 .0394262 .0838034 tenure | .1439428 .0212953 6.76 0.000 .102182 .1857037 married | -.273562 .2436884 -1.12 0.262 -.7514427 .2043187 collgrad | 3.330943 .2730949 12.20 0.000 2.795395 3.866491 _cons | 4.029129 .4833735 8.34 0.000 3.081218 4.97704------------------------------------------------------------------------------. }
. if `B' == 1 {. reg $y $x i.race i.industry. }
. if `merge' == 1 {. reg $y $x . reg $y $x i.race i.industry. }

连享会 - 文本分析与爬虫 - 专题视频

主讲嘉宾:司继春 || 游万海

连享会-文本分析与爬虫-专题视频教程
连享会-文本分析与爬虫-专题视频教程

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
Stata暑期班 连玉君
江艇
线上直播 9 天
2020.7.28-8.7
效率分析-专题 连玉君
鲁晓东
张 宁
视频-TFP-SFA-DEA
已上线,3天
文本分析/爬虫 游万海
司继春
视频-文本分析与爬虫
已上线,4天
空间计量系列 范巧 空间全局模型, 空间权重矩阵
空间动态面板, 空间DID
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:
    • 课程, 直播, 视频, 客服, 模型设定, 研究设计, 暑期班
    • stata, plus,Profile, 手册, SJ, 外部命令, profile, mata, 绘图, 编程, 数据, 可视化
    • DID,RDD, PSM,IV,DID, DDD, 合成控制法,内生性, 事件研究, 交乘, 平方项, 缺失值, 离群值, 缩尾, R2, 乱码, 结果
    • Probit, Logit, tobit, MLE, GMM, DEA, Bootstrap, bs, MC, TFP, 面板, 直击面板数据, 动态面板, VAR, 生存分析, 分位数
    • 空间, 空间计量, 连老师, 直播, 爬虫, 文本, 正则, python
    • Markdown, Markdown幻灯片, marp, 工具, 软件, Sai2, gInk, Annotator, 手写批注, 盈余管理, 特斯拉, 甲壳虫, 论文重现, 易懂教程, 码云, 教程, 知乎

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……


扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD