从 Stata 本地创建一个变量

Create a variable from Stata local

我想知道如何创建一个存储宏值的变量。最简单的例子就是下面存储 i' in a forvalues` 循环的值。

forvalues i = 1/10 {
dis `i'
}

据我所知,我可以生成名称格式为'i'的变量,但不能直接将i的值存储到另一个变量中。我最终想要做的是 创建一个年份变量,显然,使用循环 :

存储数据集的年份
forvalues i = 2000/2020 {
use dataset`i'
gen year`i' = `i'
*gen year`i' = "`i'" ***this did not work either
}

以上代码生成一堆

year`i' 

具有 0 或 NULL 值。

语法对我来说很好。错误报告因此令人费解。各种评论如下:

一种猜测是,虽然您的引号在这里看起来不错,但您可能使用了不同的字符。这里的左右单引号在Stata术语中是uchar(96)uchar(39).

Stata 没有 NULL 的概念。对于数值变量,一般缺失值由点、句点或停止 . 表示。我不明白为什么你会得到一个变量,除了 2000/2020 之一作为它的值。 (因此0的结果也是神秘的。)

局部宏的一个缺陷是包含它们的代码必须作为一个整体执行;否则局部宏的定义在引用它们的语句中是不可见的。但如果这很棘手,就很难看出为什么你会得到任何结果。

做这样的事情的一个常见动机是 appending 数据集,每年一个。但是,由于在每种情况下都有不同的变量名,这变得更加复杂。新变量在每个数据集中应该具有相同的名称,比如 year,而不是不同的名称 year2000 等等。