在某些情况下,将零替换为缺失值

时间:2015-03-14 22:57:55

标签: stata

我想知道是否有人知道如何更简单地执行以下操作:

我每年都有一个医疗机构案例数据集,每个观察点都是一个医疗机构。设施在不同年份“上线”,因此有些设施在具有案件数量值之前就有零。此外,一些'停止',就像他们确实提供服务,但不再是。我想在设施停产的年份中用缺失值替换零。在下面的示例中,第3和第4个设施已停止使用,因此我希望第3个和y2014&{第4次y2013

y2014

我尝试了下面的工作,但是我将会有很多年的数据(2000-2014),所以想知道是否有更有效的方法。

y2011 y2012 y2013 y2014 0 0 76 82 0 0 29 13 0 0 25 0
5 10 0 0 0 0 17 24

我和replace y2014=. if y2014==0 & (y2013>0 | y2012>0 | y2011>0) replace y2013=. if y2013==0 & ( y2012>0 | y2011>0) replace y2012=. if y2012==0 & ( y2011>0)搞混了,以确定过去一年中零点的设施(意味着它们已停止),但后来不知道该去哪里。

1 个答案:

答案 0 :(得分:1)

您的问题将受益于循环变量。

我们将started初始化为0,当我们看到正值时改变我们对started的看法,并在started为1时将任何后续0更改为缺失。< / p>

gen started = 0 

forval y = 2000/2014 { 
    replace started = 1 if y`y' > 0 
    replace y`y' = . if started == 1 & y`y' == 0 
} 

请注意,此方案允许重新启动。

更一般的评论是,这不是这种面板或纵向数据的更好的数据结构。这个特殊问题不是太具挑战性,但在reshape long之后,这些数据的大多数问题会更容易解决。

here for a survey of "rowwise" technique in Stata