了解do文件中的语法

问题描述

我对Stata来说还很陌生,刚刚开始学习。 我有一个.do文件,其中包含我尝试理解的代码。我不确定下面的代码块到底在做什么。

set obs 150
generate x = 5+int((10-5+1)*runiform())

count
local bigN = r(N)

generate y = x / `bigN'

我是正确的假设

  • 在创建150个观测值之后,将创建一个变量x,其中包含150个观测值中每个观测值的随机数。

  • 然后,一个local用于将变量bigN中的观测值(150)存储为一个数字。

  • 最后,将创建一个新变量y,该变量的每个x值除以bigN中存储的观测值数量(意味着y的值因为第一个观察值是x的第一个值除以150,依此类推。

我理解正确吗?如果是,为什么使用local而不使用generate?看来local仅在完全使用.do文件时有效。

解决方法

是的,这实际上就是它的作用。

局部变量不是常规的Stata变量。它是一个临时对象,仅在一次代码执行中可用。假设您运行以下两行代码。

local i = 5
disp `i'

当您共同运行它们时,它会打印:

. local i = 5

. disp `i'
5

分别运行它们会打印:

. local i = 5
.
. disp `i'

分别运行两行不会打印5,因为Stata仅在一次执行中保存本地。与局部变量相比,全局变量可通过单独的代码执行访问。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...