2017-06-16 14 views
1

SASが列全体で合計するときの構文を混乱させています。SAS Sum構文の問題

私は列にわたって合計するには、次のコードを書いた:

DATA SUM_RESULTS_ADF; 
    SET VOLUME_DOLLAR; 
    by SYM_ROOT; 
    if %upcase(EX) = 'D'; 
    if first.SYM_ROOT then 
     do; 
      SUMMED_DOLLARSIZE=0; 
      SUMMED_SIZE=0; 
     end; 
    SUMMED_DOLLARSIZE + DOLLAR_SIZE; 
    SUMMED_SIZE + SIZE; 
    if last.SYM_ROOT then output; 
    drop DOLLAR_SIZE SIZE; 
RUN; 

私はちょうどという名前の列DOLLAR_SIZEとサイズ内のすべての数値を合計します。しかし、私はそれを正しく行っているかどうかはわかりません。

ためOOCの言語で、我々は通常の書き込み:SUMMED_DOLLARSIZE = SUMMED_DOLLARSIZE + DOLLAR_SIZE;

をしかし、SASがここに等号を必要としないようです。

+0

私はこのコメントが愚かに聞こえるかもしれ知っているが、なぜSQLを使わないのでしょうか? –

+0

実際には多くの言語には暗黙的なsum文があります。これはあなたがここで見ているものです。 – Reeza

答えて

2

SUMステートメントまたはSUM(、...)関数を使用すると、欠損値は+演算子を使用する場合とは異なる方法で処理されます。 SUMでは、欠損値は無視されますが、欠損値は+で失われます。

SUMステートメントを使用しています。それはいくつかの入力を節約するためのちょうど短いカットです。

variable + expression ; 

それは、これらの二つの文に相当します:

SUM文の書式を持っているあなたは、代わりにSUM(、...)関数の簡単な追加を使用した場合

retain variable 0 ; 
variable = sum(variable,expression); 

欠損値のある観測結果は、合計が失われます。ここで

が働い例です。

data want ; 
    input cost ; 
    sum1 + cost ; 
    retain sum2 0; 
    sum2 = sum(sum2,cost); 
    retain sum3 0; 
    sum3 = sum3 + cost; 
cards; 
10 
20 
. 
30 
; 

enter image description here

+0

単純な追加はどのように見えますか? –

+0

例を更新 – Tom