我的数据集中的一些观察需要分成两个或三个不同的观察。例如以下观察:
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可以吗?
最佳答案
很难从您的示例中解决这里的一般问题。注意
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 程序员来说,这将是一个重大项目。(稍后)
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
关于duplicates - 斯塔塔。如何拆分观察?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17007403/