2017-01-01 36 views
0

我想保留意见的计以前年度的最有效的方法:SAS:计数唯一值上一年(保持计数)

我有数据,看起来像这样:

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

这可能会在数据步骤中进行如下:

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;    
+0

完美,这正是我需要的。谢谢。 – User1414

+0

如果答案适用于您,您可以投票并选择它作为您选择的答案。谢谢 – DCR