我希望创建一个变量(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
,但是没有用
答案 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