0

如果我在 Stata 中有一个带有数字的变量,我可以使用嵌入在公式中的值吗?

例如,我可变天数 ( days) 并且对于每个人,我想在第二个公式中使用该数字:

ID    Days    var_x_1    var_x_2    var_x_3    var_x_4    var_x_5    var_x_6
A      2        7           8          9          10         2          1
B      1        1           7          1          11         12         11
C      6        7           9          2          12         6          12
D      2        2           4          3          17         7          18

gen new_var = var_x_DAYS

变量new_var将取值并从列表中Days提取相应的值:var_x

ID new_var
A    8
B    1
C    12
D    4

我努力了:

local DaysUse = Days
g new_var = var_x_`DaysUse'

然而,这并没有奏效。

4

1 回答 1

2

最后的声明可能是完全合法的;它只是不做你想做的事。考虑

local DaysUse = Days
g new_var = var_x_`DaysUse'

本地宏只是一些文本。更重要的是,它是文本常量或标量,而不是文本元素的变量或向量。在这里 Stata 会理解你想要的

local DaysUse = Days[1] 

这样您的local将包含 string 2,至少对于您的示例,这样

g new_var = var_x_2 

将是宏替换后的最终结果。如果你去了

local DaysUse = "Days"

你会得到

g new_var = var_x_Days

这在这里没有用。

对于您的问题,有更多积极的技术。

gen new_var = . 
quietly forval j = 1/6 { 
    replace new_var = var_x_`j' if Days == `j' 
}     

Stata 有一些你想要的东西。考虑

sysuse auto, clear
set seed 2803 
gen index = ceil(runiform() * 74)
gen bsample_mpg_1 = mpg[index]
gen bsample_mpg_2 = mpg[ceil(runiform() * 74]

作为获得引导样本的两种方法。但这并不适用于您的要求。

于 2014-03-25T16:56:37.547 回答