2017-01-01 105 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