4

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

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可以吗?

4

1 回答 1

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。如何匹配 1:m 关系中的值?并试图重新发明merge。我只能说,对于经验丰富的 Stata 程序员来说,这将是一个重大项目。

(稍后)

 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  
于 2013-06-09T11:31:56.463 回答