Obs Best _streak_
1 Freeburg Foxes 1
2 Freeburg Foxes 2
3 Freeburg Foxes 3
4 Freeburg Foxes 4
5 Charlotte Chipmunks 1
6 Toronto Turtles 1
7 Toronto Turtles 2
8 Freeburg Foxes 1
9 Freeburg Foxes 2
10 Toronto Turtles 1
...
Obs Best _streak_
1 Freeburg Foxes 4
2 Charlotte Chipmunks 1
3 Toronto Turtles 2
4 Freeburg Foxes 2 (thanks for correcting)
...
上面(第一个在上面)是我当前的SAS输出。但是,我想只显示一个团队使用团队名称一次使用 streak 的最大次数。所以我的输出看起来像第二个(或更短的输出)。
答案 0 :(得分:1)
如果数据按照您指定的顺序排序,那么只需一次传递数据就可以使用NOTSORTED选项获得结果。
data have;
input best & $20. _streak_;
datalines;
Freeburg Foxes 1
Freeburg Foxes 2
Freeburg Foxes 3
Freeburg Foxes 4
Charlotte Chipmunks 1
Toronto Turtles 1
Toronto Turtles 2
Freeburg Foxes 1
Freeburg Foxes 2
Toronto Turtles 1
;
run;
data want;
set have;
by best notsorted;
if last.best;
run;
答案 1 :(得分:0)
我相信所需的输出观察4应该是:
4 Freeburg Foxes 2
? 因此,我们为每个团队的每个或有系列记录选择最大条纹,而不是绝对最大值,对吗?
然后你可以这样做,添加同一数据集的第二个实例,向上移动一行,以便能够“向前看”并确定当前记录是系列中的最后一个::
data want;
set have;
if not eof then do;
set have(firstobs=2 keep=Best
rename=(Best=nextBest))
end=eof;
end;
if Best^=nextBest or eof then output;
drop next:;
run;