Stata的。如何拆分观察?

时间:2013-06-09 07:29:52

标签: duplicates stata

我的数据集中的一些观察结果需要分成两个或三个不同的观察结果。例如,以下观察:

region  income   gdp   other
North   120      450   50

我需要将所有变量的相同的值分成三个观察点,除了像这样的区域:

region  income   gdp   other
IL      120      450   50
MI      120      450   50
IN      120      450   50

我需要类似的东西:

if (region == "North") {
//create three new observations and delete the old one
}

Stata可以吗?

1 个答案:

答案 0 :(得分:4)

很难从你的例子中找出这里的一般问题。注意

if region == "North" { 
      <code>
} 

无法正常工作,因为它等同于

if region[1] == "North" { 
      <code>
} 

并且是一个只有一次的分支。这在http://www.stata.com/support/faqs/programming/if-command-versus-if-qualifier/

中有记录

这是合法的:

expand 3 if region == "North" 

但你需要一个接一个地替换。

(稍后)一个疯狂的猜测是你正在跟进Stata. How to match values in 1:m relationship?并尝试重新发明merge。我只能说这对于经验丰富的Stata程序员来说是一个重大项目。

(STILL LATER)

 gen long obsid = _n 
 gen state = "" 
 gen isnorth = region == "North" 
 expand 3 if isnorth 
 bysort obsid : replace state = "IL" if isnorth & _n == 1 
 by obsid : replace state = "MI" if isnorth & _n == 2
 by obsid : replace state = "IN" if isnorth & _n == 3