这个问题基于之前的答案Stata:多个日期范围内的重叠天数(大部分)对我有帮助。我想计算多个日期范围内重叠的天数 - 我需要列出一个范围内的完整日期列表(即,
reshape
从宽到长的数据)。
已发布解决方案。但是,我收到错误,因为我的日期不唯一(如下面的假数据所示):
/* Fake Data */
input str9(start end)
"01jan2000" "04apr2000"
"30may2000" "15aug2000"
"07jan2000" "31dec2000"
end
foreach var of varlist start end {
gen d = date(`var', "DMY")
drop `var'
gen `var' = d
format %td `var'
drop d
}
/* Count Overlapping Days */
rename (start end) date=
gen spell = _n
reshape long date, i(spell) j(range) string
drop range
xtset spell date, delta(1 day)
tsfill
bys date: keep if _N>1
任何人都可以帮我调整此代码以允许非不同的日期吗?
我不明白您引用的代码对于确定每个观察所暗示的个体之间的时间重叠有什么影响。通过对您想要的内容进行多次猜测,这会生成一个允许对重叠进行计数的数据集。
clear
/* Fake Data */
input str9(start end)
"01jan2000" "04apr2000"
"30may2000" "15aug2000"
"07jan2000" "31dec2000"
end
gen id = _n
rename (start end) (str_date1 str_date2)
reshape long str_date, i(id) j(which)
gen date = daily(str_date, "DMY")
tsset id date
tsfill
bysort date : gen n = _N
spikeplot date, yla(0/2) base(0)