2016-08-10 3 views
-2

Wir haben ein Dataset wie dieseDruck Summe nach jeder zwei Beobachtungs

data a; 
    length id 8 actlevel $6 fee 8; 
    infile datalines; 
    input id actlevel fee; 
    datalines; 
1 High 85.20 
2 High 124.80 
3 Low 149.75 
4 Medium 149.75 
5 Low 124.80 
; 
run; 

Wir haben eine Ausgabe wie diese

id actlevel fee 

1 High 85.20 
2 High 124.80 
Act Level 210.0 

3 Low 149.75 
4 Low 124.80 
Act Level 274.55 

5 Medium 149.75  
Act level 634.30 

drucken ich den Code verwende:

proc sort data=a; 
    by actlevel; 
run; 

data total; 
    set a; 
    by actlevel; 

    if first.actlevel then 
     sum1=0; 
    sum1+fee; 

    if last.actlevel then 
     output; 
    drop fee; 
run; 

proc print data=total; 
    sum sum1; 
run; 

Erste Drucksumme der ersten zwei Beobachtungen (nach Actlevel) & dann Drucksumme von zwei weiteren (nach Actlevel) Beobachtung in l ast Drucksumme aller 5 Beobachtungen.

+0

Bitte klären Sie Ihre Frage, es ist unklar. Und formatiere deine Frage in Zukunft entsprechend. Ich habe es diesmal gemacht, aber wenn du dir nicht die Zeit dafür nimmst, werden sich die Leute wahrscheinlich nicht die Zeit nehmen, deine Frage zu beantworten. – Reeza

Antwort

0

Ich denke, dass Sie keine Vorverarbeitung im Datenschritt benötigen, um eine ähnliche Ausgabe zu erhalten, die Sie angegeben haben. proc print Verfahren haben so etwas wie sumby, um diesen Job zu erledigen.

proc sort data=a; 
    by actlevel; 
run; 

proc print data=a; 
    by actlevel; 
    sumby actlevel; 
    sum fee; 
run;