在SAS

2012-07-13 49 views
1

平均面板數據我有面板數據,看起來像這樣在SAS

ID Usage  month  
1234 2  -2 
1234 4  -1 
1234 3   1 
1234 2   2 
2345 5  -2 
2345 6  -1 
2345 3   1 
2345 6   2 

顯然有更多的ID變量和使用數據,但這是一般形式。我想在月份列爲負數時以及每個ID爲正數時平均使用情況數據。換句話說,對於每個唯一的ID,平均使用負數月和正數月。我的目標是得到這樣的東西。

ID avg_usage_neg avg_usage_pos 
1234  3     2.5 
2345  5.5    4.5 

回答

1

這裏有幾個選項適合你。

首先創建測試數據:

data sample; 
    input ID  
     Usage  
     month; 
datalines; 
1234 2  -2 
1234 4  -1 
1234 3   1 
1234 2   2 
2345 5  -2 
2345 6  -1 
2345 3   1 
2345 6   2 
; 
run; 

下面是一個SQL解決方案:

proc sql noprint; 
    create table result as 
    select id, 
     avg(ifn(month < 0, usage, .)) as avg_usage_neg, 
     avg(ifn(month > 0, usage, .)) as avg_usage_pos 
    from sample 
    group by 1 
    ; 
quit; 

這裏有一個datastep的/ proc意味着解決方案:

data sample2; 
    set sample; 
    usage_neg = ifn(month < 0, usage, .); 
    usage_pos = ifn(month > 0, usage, .); 
run; 

proc means data=sample2 noprint missing nway; 
    class id; 
    var usage_neg usage_pos; 
    output out=result2 mean=; 
run; 
+0

謝謝你,就像一個魅力。 – bstockton 2012-07-13 20:40:09