Stata:在循环中替换egen
我试图根据不同的Stata:在循环中替换egen,stata,Stata,我试图根据不同的if条件计算未缺失的值。然后取每个月的max gen xx1=. gen xx2=. forvalues i = 1/12{ bys state year month: replace xx1= 1 if month==`i' & no_monthsreport>=`i' bys state year month: replace xx2= sum(!missing(xx1)) bys state year month: egen tot_xx3 =max(xx2
if
条件计算未缺失的值。然后取每个月的max
gen xx1=.
gen xx2=.
forvalues i = 1/12{
bys state year month: replace xx1= 1 if month==`i' & no_monthsreport>=`i'
bys state year month: replace xx2= sum(!missing(xx1))
bys state year month: egen tot_xx3 =max(xx2)
}
我注意到,
egen
命令不能是replace
d。所以循环不起作用。我想知道是否有一种方法可以在不创建更多变量的情况下实现这一点 直接的答案是egen
没有replace
选项,也没有与egen
对应的replace
类型命令。因此,您需要drop
或rename
使用与要在egen
命令中使用的变量名相同的任何先前结果
然而,在这个问题中,egen
是不需要的,而且循环看起来也放错了位置。我不明白你想做什么,但我想你想要更像
gen xx1 = .
forvalues i = 1/12 {
replace xx1 = 1 if month == `i' & no_monthsreport >= `i'
}
bys state year month: gen xx2 = sum(xx1)
bys state year month: gen tot_xx3 = xx2[_N]
注意
xx1
不需要by:
的框架,因为任何东西都不依赖于周围的观察组xx1
的运行或累计总和xx1
缺失或1。因此,xx1
在不为1时并不精确缺失。无需启动missing()
函数,然后在可以直接计算1时将其取反sum()
忽略)州
、年
和月
分别进行计算取决于您,但这一选择往往是错误的根源