我想知道在过去几年保持观察次数的最有效方法:
我的数据如下:
id store year count
1 green 2011 3
2 green 2011 3
3 green 2011 3
4 green 2012 1
5 blue 2012 1
6 blue 2013 1
7 red 2011 1
8 red 2012 1
9 red 2013 1
基本上,我计算了ID的频率,并按商店和年份对它们进行分组,以跟踪当年在商店购买的观察数量。
现在,我想要做的是对前一年的观察数量。
期望的输出:
> id store year count Count_Previous_Years
>
> 1 green 2011 3 0
>
> 2 green 2011 3 0
>
> 3 green 2011 3 0
>
> 4 green 2012 1 3
>
> 5 blue 2012 1 0
>
> 6 blue 2013 1 1
>
> 7 red 2011 1 0
>
> 8 red 2012 1 1
>
> 9 red 2013 1 2
有没有办法在SQL中执行此操作?即Count(id)与前一年的“where”陈述?
答案 0 :(得分:0)
这可以在数据步骤中完成,如下所示:
proc sort data=a;
by store year;run;
data b;
set a;
by store year;
retain hold_year count2 previous;
if first.store then do;
hold_year = year;
previous = 0;
count2 = 0;
end;
if year > hold_year then do;
previous = count2;
hold_year = year;
end;
count2=count2+1;
run;