% 不包括 NA 编码变量的变化 (Stata)

% Change excluding NA coded variables (Stata)

我有两个变量,其中 pr8 是新时期,pr7 是旧时期,我创建了以下代码来创建百分比变化变量:

gen pchange = (pr8-pr7)/pr7*100

但是,我注意到两个变量:pr8 和 pr7,都包含编码为 (993) 表示“无回答”和 (994) 表示“拒绝回答”的值,我想从百分比中排除这些值改变计算,因为他们偏向于描述性统计。因此,我想创建一个排除上述编码值的 pchange 变量。

我用下面的代码解决了这个问题,但不确定这是否是最好的方法。然后我 运行 上面相同的代码。

replace pr7 = . if pr7 == 993
replace pr7 = . if pr7 == 994

replace pr8 = . if pr8 == 993
replace pr8 = . if pr8 == 994

最好的解决办法是 -- 在更改计算之前 --

foreach v in pr7 pr8 { 
    replace `v' = .a if `v' == 993 
    replace `v' = .b if `v' == 994 
} 

否则,前面的变通代码是无穷无尽的。相应地定义新的值标签。