我的数据集中的一些观察结果需要分成两个或三个不同的观察结果。例如,以下观察:
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可以吗?
答案 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