【发布时间】:2018-07-09 15:13:29
【问题描述】:
我有一个看起来有点像这样的大面板数据集:
data have;
input id t a b ;
datalines;
1 1 0 0
1 2 0 0
1 3 1 0
1 4 0 0
1 5 0 1
1 6 1 0
1 7 0 0
1 8 0 0
1 9 0 0
1 10 0 1
2 1 0 0
2 2 1 0
2 3 0 0
2 4 0 0
2 5 0 1
2 6 0 1
2 7 0 1
2 8 0 1
2 9 1 0
2 10 0 1
3 1 0 0
3 2 0 0
3 3 0 0
3 4 0 0
3 5 0 0
3 6 0 0
3 7 1 0
3 8 0 0
3 9 0 0
3 10 0 0
;
run;
对于每个 ID,我想记录所有“触发”事件,即当 a=1 时,然后我需要多长时间才能 下一次 出现 b=1。最终输出应该给我以下内容:
data want;
input id a_no a_t b_t diff ;
datalines;
1 1 3 5 2
1 2 6 10 4
2 1 2 5 3
2 2 9 10 1
3 1 7 . .
;
run;
获取所有 a=1 和 b=1 事件当然没有问题,但由于它是一个非常大的数据集,每个 ID 都有很多这两个事件,我正在寻找一个优雅而直接的解决方案。有什么想法吗?
【问题讨论】:
-
是否存在 a=1 和 b=1 在同一 t 的情况?如果是这样,应该怎么办?
-
a=1 和 b=1 不能同时发生
标签: sas panel-data