2017-06-16 1 views
1

Ich bin verwirrt von der Syntax SAS verwendet, wenn Summen über die Spalte.SAS Summe Syntax Problem

Ich schrieb den folgenden Code über die Spalten zu summieren:

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; 

ich alle Zahlen in der Spalte mit dem Namen DOLLAR_SIZE und Größe nur summieren möchten. Aber ich bin mir nicht sicher, ob ich es richtig mache.

Da in OOC Sprachen schreiben wir in der Regel: SUMMED_DOLLARSIZE = SUMMED_DOLLARSIZE + DOLLAR_SIZE;

Aber es scheint, dass SAS das Gleichheitszeichen hier nicht brauchen.

+0

ich diesen Kommentar einfach albern klingen, aber warum nicht SQL verwenden? –

+0

Tatsächlich haben viele Sprachen eine implizite Summenanweisung, die Sie hier sehen. – Reeza

Antwort

2

Die Verwendung der SUM-Anweisung oder der SUM (, ...) -Funktion behandelt fehlende Werte anders als nur mit dem Operator +. Mit SUM werden die fehlenden Werte ignoriert, aber mit + werden sie ein fehlendes Ergebnis erzeugen.

Sie verwenden die SUM-Anweisung. Das ist nur eine Abkürzung, um ein wenig Tipparbeit zu sparen.

Die SUM-Anweisung hat die Form:

variable + expression ; 

Es entspricht diesen beiden Aussagen:

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

Wenn Sie eine einfache Addition anstelle der SUM (...) Funktion dann Beobachtungen mit fehlenden Werten würden dazu führen, dass die Summe fehlt. Hier

ist an einem Beispiel:

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

Wie sieht die einfache Addition aus? –

+0

Aktualisiert mit Beispiel – Tom