该解决方案涉及遍历所有观测并使用的事实,你可以用日期计算,你会与整数,给后日期变量a 日期格式。 (这些日期只是整数,详见例如help datetime
)。
每个观察结果都与循环固定的观察结果进行比较。对于其中绝对差值为<= 2
的那些观察值,可以使用ind == 1
。之后,我用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
不要混淆或混淆'if'命令和'if'限定符。 –