Stata - 计算窗口内的观察值

时间:2014-03-28 00:24:35

标签: stata

我希望创建一个变量(COUNT_WITHIN_2_DAYS),它是日期范围内的观察计数。范围是指定的日期+/- 2天。

 ID#          DATE          COUNT_WITHIN_2_DAYS
  1         1/1/2000                3
  2         1/2/2000                4
  5         1/2/2000                4
  6         1/4/2000                3
  9        1/12/2000                1
 11         3/1/2001                2
 12         3/3/2000                4
 16         3/4/2000                3
 18         3/5/2000                3
 21         3/8/2000                1

我使用egen命令尝试了if,但是没有用

1 个答案:

答案 0 :(得分:2)

这个解决方案涉及循环所有观察,并在给出日期变量日期格式之后,使用可以用整数计算日期的事实。 (这些日期只是整数。有关详细信息,请参阅help datetime

将每个观察结果与循环修正的一个观察结果进行比较。对于那些绝对差异为ind == 1的观察,<= 2。之后,我使用summarize加分 这种观察的数量。最后,使用变量counter将和的结果分配给固定观测值。重复该过程,直到每个观察结果都已修复。

clear all
set more off

*-------------- example data ----------------
input ///
id str15 date 
  1         "1/1/2000"                
  2         "1/2/2000"                
  5         "1/2/2000"                
  6         "1/4/2000"                
  9        "1/12/2000"                
 11         "3/1/2001"                
 12         "3/3/2000"                
 16         "3/4/2000"                
 18         "3/5/2000"                
 21         "3/8/2000"               
 end

gen date2 = date(date, "MDY")
format date2 %td

drop date
rename date2 date

sort date
list

*------------ what you want ------------------

gen counter = .
gen ind = .
forvalues i = 1/`=_N' {
    replace ind = abs(date - date[`i']) <= 2

    summarize ind, meanonly
    replace counter = r(sum) in `i'
}

drop ind
list