【发布时间】:2014-05-29 06:43:39
【问题描述】:
使用以下数据集。
id date date1a date1b date2a date2b variable
1 1/1/2000 2/6/2009 8/9/2009 7/14/2010 9/2/2010 7
1 1/2/2000 2/6/2009 8/9/2009 7/14/2010 9/2/2010 2
1 1/2/2000 2/6/2009 8/9/2009 7/14/2010 9/2/2010 11
...
1 1/1/2013 2/6/2009 8/9/2009 7/14/2010 9/2/2010 9
1 1/8/2013 2/6/2009 8/9/2009 7/14/2010 9/2/2010 8
2 2/2/2010 6/1/2010 7/9/2011 4/6/2012 5/1/2012 4
2 2/2/2010 6/1/2010 7/9/2011 4/6/2012 5/1/2012 3
2 2/2/2010 6/1/2010 7/9/2011 4/6/2012 5/1/2012 1
...
2 5/1/2012 6/1/2010 7/9/2011 4/6/2012 5/1/2012 1
2 5/1/2012 6/1/2010 7/9/2011 4/6/2012 5/1/2012 1
我想创建变量sum1 和average1 和sum2 和average2,它们在date1a 到date1b 的日期范围之间完成variable 的操作(对于@987654329 @ 和 average1) 和 date2a 到 date2b(对于 sum2 和 average2)。
现在,我的方法很费力,容易出错,并且没有捕捉到我在同一天有重复条目的事实。另外,如果没有与date1b 或date2b 匹配的date,那么我需要手动进行编辑。
sort date
gen date1range = date1b - date1a
local j = date1range
forval i = 1/`j' {
by id: gen variableforcalc`i' = variable[_n-`i']
}
egen sum1 = rowtotal(variableforcalc*)
egen average1 = rowmean(variableforcalc*)
gen dateflag = 0
replace dateflag = 1 if date == date1b
【问题讨论】:
-
平均值必须是相同的
id? -
@NickCox 都在
id内,我编辑了这个问题。谢谢 -
我还是觉得你需要把问题说清楚。