我有一张桌子像:

Name | ID | Event
Smith| 1  |
Smith| 2  | Y
Smith| 3  |
Jones| 1  |
Jones| 2  | Y
Jones| 3  |
Jones| 4  | Y

我想计算每个人在每个点上看到事件的次数,例如:
Name | ID | Event | Event Count
Smith| 1  |       | 0
Smith| 2  | Y     | 1
Smith| 3  |       | 1
Jones| 1  |       | 0
Jones| 2  | Y     | 1
Jones| 3  |       | 1
Jones| 4  | Y     | 2

我猜在sql中我不能这么做?如果不是,你能非常清楚我如何在SAS(或任何适当的方式)做这件事,因为我是新的!
(仅供参考,这使我能够区分在每个事件之前或之后发生的行,即filter by event=blank,以及在第一个事件之前发生的任何0,之后发生的任何1,等等。可能有一种更简单的方法可以做到这一点。)
谢谢!

最佳答案

如果您想沿着sas路径走下去,它会按顺序读取数据,因此非常适合这种类型的问题

data have;
infile datalines missover;
input Name $ ID  Event $;
datalines;
Smith 1
Smith 2   Y
Smith 3
Jones 1
Jones 2   Y
Jones 3
Jones 4   Y
;
run;

proc sort data=have;
by name id;
run;

data want;
set have;
by name id;
if first.name then event_count=0;
event_count+(event='Y');
run;

10-05 18:24