如果缺少 (.) (Stata),请替换

Replace if missing (.) (Stata)

我的数据如下:

dataex pchange
-20
.
3
-47
44
.
0

然后我写了下面的代码:

gen ind_inc=""
replace ind_inc="Decreased" if pchange<0
replace ind_inc="Same" if pchange==0
replace ind_inc="Increased" if pchange>1

前三行按预期工作,但是,在 pchange 缺少“.”的行中,它们在 ind_inc 变量下被归类为已增加,我该如何更正?

pchange    labor_inc
-50         Decreased
.           Increased
.             Increased
-44        Decreased
0         Same

Stata 中的缺失值被视为非常大的正值。有关详细信息,请参阅 help missing

在你的情况下,你已经写了 replace ind_inc="Increased" if pchange>1。当 pchange 缺失时,它是一个非常大的正值,大于 1 所以 ind_inc 被替换。

相反,您可以使用以下内容:

replace ind_inc="Increased" if pchange>1 & !missing(pchange)

与另一个答案相比,这更像是评论,但以这种方式显示会更容易阅读。即使对

进行了明显的修复
gen ind_inc=""
replace ind_inc="Decreased" if pchange<0
replace ind_inc="Same" if pchange==0
replace ind_inc="Increased" if pchange>0 

这是个坏主意,因为一旦您尝试将结果制表或绘制图表,您就会发现。 ind_inc 不记得其来源,因此将按字母顺序显示,"Decreased" "Increased" "Same"。很难相信这就是你想要的。

我推荐更像

gen ind_inc = sign(pchange) if pchange < . 
label define ind_inc -1 "Decreased" 0 "Same" 1 "Increased" 
label val ind_inc ind_inc