Prozentualer Abbau mit einem Array
Verfasst von Zuralein am 28 Juli, 2010 - 11:51
Hallo zusammen,
wie kann ich folgendes Problem lösen? Ich habe folgendes Dataset:
Netto0 Netto1 Netto2 Netto3 .... Netto 120
123 90 80 70 10
Ich möchte nun den prozentualen Abbau ausrechnen, also:
Monat1 = Netto1/Netto0
Monat2 = Netto2/Netto0
usw.
Die Ergebnisreihe soll entweder recht an den aktuellen DAtensatz angefügt werden oder in einer neuen Zeile erscheinen.
Kann ich über ein Array oder Schleife lösen? Und wenn ja, wie?
Vielen Dank schonmal vorab!
»
- Anmelden oder Registrieren um Kommentare zu schreiben

Array
Hallo Lisa,
ich würde es spontan so machen:
data a(drop=i);
array _netto(1:10) netto0-netto9;
array _abbau(1:10) abbau0-abbau9;
do i = 1 to 10;
_netto(i)=round(ranuni(-1)*150,1);
end;
do i = 1 to 10;
_abbau(i)=round(_netto(i)/_netto(1),0.001);
end;
run;
Zunächst erzeuge ich mir ein paar Zahlen, hier nur 10 aber es geht ja ums Prinzip, das wären dann Deine Zahlen, die Du einliest.
In der zweiten do-Schleife mache ich dann das eigentlich für Dich Interessante.
Viele Grüße
Wolfgang
Ohne Array
Hallo Lisa,
meine Lösung ist nicht ganz so hübsch, fügt dir aber die entsprechenden Spalten direkt an die Tabelle an.
input netto00 netto01 netto02 netto03;
datalines;
100 90 80 66
100 99 88 44
100 84 56 22
;
run;
data _null_;
call execute('data test2; set test;');
i = 1;
do while (i <= 3);
call execute('netto'||compress(put(i,$z2.))||'_ab=netto'||compress(put(i,$z2.))||'/netto00;');
i = i+1;
end;
call execute('run;');
run;
Du müsstest nur die Anzahl der Schleifendurchläufe und das Format in der PUT-Funktion für die 120 anpassen.
Gruß Frederik