名称无效 - 创建新变量
invalid name - creating new variable
我正在使用下面的代码在 Stata 中生成一个新变量,但收到一个错误消息 "hv2 invalid name r(198);"*
gen ph= hv1==2
replace ph=. if hv2*!=1
label values ph yesno
label var ph "PH present"
其中 hv2* 指的是从 hv2_1 到 hv2_98 的变量(总共 98 个变量)。 hv2* 是家庭变量,值不为 1 表示受访者不是来自调查中使用的家庭。我的新变量 ph 取决于受访者是否是调查中使用的家庭的居民。新变量 (ph) 中应缺少非居民,因此 "替换 ph=。如果 hv2!=1" .也就是说,在 hv2 变量中任何值不为 1 的情况都应该在新变量中丢失。
gen ph = hv1 == 2
quietly forval j = 1/98 {
replace ph = . if hv2_`j' == 1
}
命令 egen
提供了可以在这里使用的函数,因此(例如)
gen ph = hv1 == 2
egen any1 = anymatch(hv2_*), values(1)
replace ph = . if any1
似乎避免了循环,但您只是在 anymatch()
的代码中有一个循环来做同样的事情。
我正在使用下面的代码在 Stata 中生成一个新变量,但收到一个错误消息 "hv2 invalid name r(198);"*
gen ph= hv1==2
replace ph=. if hv2*!=1
label values ph yesno
label var ph "PH present"
其中 hv2* 指的是从 hv2_1 到 hv2_98 的变量(总共 98 个变量)。 hv2* 是家庭变量,值不为 1 表示受访者不是来自调查中使用的家庭。我的新变量 ph 取决于受访者是否是调查中使用的家庭的居民。新变量 (ph) 中应缺少非居民,因此 "替换 ph=。如果 hv2!=1" .也就是说,在 hv2 变量中任何值不为 1 的情况都应该在新变量中丢失。
gen ph = hv1 == 2
quietly forval j = 1/98 {
replace ph = . if hv2_`j' == 1
}
命令 egen
提供了可以在这里使用的函数,因此(例如)
gen ph = hv1 == 2
egen any1 = anymatch(hv2_*), values(1)
replace ph = . if any1
似乎避免了循环,但您只是在 anymatch()
的代码中有一个循环来做同样的事情。