2014-01-06 34 views
1

我在轉換的SAS代碼爲R,自工作,我是比較新的SAS我無法理解下面的代碼片段 - 用於擴大時間PROC擴大R中

proc expand data=A out=B; 
by number beg_date; 
id date; 
convert alpha1=calpha1/transformout=(+1 cuprod -1); 
convert alpha2=calpha2/transformout=(+1 cuprod -1); 
convert alpha3=calpha3/transformout=(+1 cuprod -1); 
run; 

我明白擴大系列數據如從月到季或合同。但是什麼是by和id聲明? 從引用SAS支持,我認爲BY語句用於指定變量,以便計算一組該變量的累積產品。至於ID聲明,我明白這是確定觀察結果的關鍵。如果我的理解是正確的,任何人都可以告訴我?爲了這個目的,我在R中使用了transform命令嗎? 我沒有SAS許可證,所以我不能在樣本數據上試一試並理解輸出。同樣,我沒有原始數據集可供使用。

回答

2

從你的代碼片段看來,這個proc expand將會創建三個變量calpha1,calpha2和calpha3。 cuprod是要輸出累積產品的proc expand中的一個選項。因此,這將在每個beg_date組中找到所有alpha1,alpha2和alpha3的產品,該組按照語句排序。我相信在proc expand之前應該有一個proc sort來使用by語句。

關於ID聲明,好像原創作者不想使用默認時間設置proc expand。因此,通過在id語句中指定date變量,計算將基於由date給出的時間點。

http://support.sas.com/documentation/cdl/en/etsug/63348/HTML/default/viewer.htm#etsug_expand_sect008.htm