识别具有最大连续值的行

时间:2018-07-10 13:35:39

标签: sql sas

我在表中有两列。根据预定条件,第二列为1或零。有人可以帮我找出最大连续出现1的逻辑吗?例如,在下表中,最大的连续出现次数介于第7行和第18行之间。仅需逻辑来识别此行即可。

enter image description here

谢谢

2 个答案:

答案 0 :(得分:0)

创建间隔。

data intervals ;
  set have ;
  by B NOTSORTED ;
  if first.b then start=A ;
  retain start ;
  if last.b then do;
     end = A ;
     duration = end - start + 1 ;
     output;
  end;
  drop A ;
run;

然后找到具有最大持续时间的间隔。也许您想要第一次出现最大持续时间?

proc sort data=intervals out=want ;
  by descending duration start;
run;

data want ;
  set want (obs=1);
  where B=1;
run;

答案 1 :(得分:0)

类似的东西

data have;
input A B;
datalines;
1 0
2 0
3 1
4 1
5 1
6 0
7 0
8 0
9 1
10 0
11 1
12 1
13 1
14 1
15 1
16 1
17 0
18 0
19 0
20 1
21 0
;

proc sort data=have;
by A;
run;

data want;
set have;
if B=1 then count + 1;
if B = 0 then count = 0;
run;

proc sql;
select max(count) as max_value from want;