我有这样塔塔EGEN结合,如果
year month X Y weight
2013 1 1 0 1000
2001 12 0 1 2000
数据我想创建一个基于X
和Y
变量变量Z
,有条件的year
。我以前和2002年以后两个公式为year
如果我使用egen
与if
,
if year > 2002 {
bysort year month :egen Z= total(x*weight)
}
else {
bysort year month : egen Z= total(y*weight*0.5)
}
这个代码是行不通的,因为如果year <2002
,塔塔将报告z
已创建。有什么方法可以实现这个目标吗?
我用了一种非常粗暴而且蛮力的方式来解决这个问题。我为z创建了两个变量,即z和z_2002。然后,如果年份小于2002年,我将z替换为z_2002。
“已建立”错误是不是你唯一的问题。您错误地使用了编程** ifcmd **,而不是** if **限定符(如果**,则为**帮助)。请参阅http://www.stata.com/support/faqs/programming/if-command-versus-if-qualifier/只有符合条件** if if可用于对观测子集进行操作。 –
我们再来一次。你想要什么? 是否如下: 1. 2002年之前有两条规则,一条适用于之后。 2. Z是x或y的每月函数的年总和,取决于年份。 这是正确的吗? – D3L
z是每个月和每年的月度总和。 z的公式因年份而异。 –