Variable als Summe einer Variable erstellen....
Guten Tag,
ich arbeite im Rahmen meiner Diplomarbeit mit SAS.
Allerdings zum ersten mal und überhaupt, habe ich keine Programmierkenntnisse.
Habe mich jedoch hier und dort reingelesen und bin an folgender Stelle hängengeblieben:
Der folgende Code
data Cdo.unternehmenswerte;
DO i=1 TO 5;
Y=NORMAL(0);
e=NORMAL(0);
V=(0.3**(0.5))*Y+((1-0.3)**(0.5))*e;
D=probit(0.2);
if V LT D Then Ausfall=1;
Else Ausfall=0;
if Ausfall EQ 1 Then PV_Ll=(1-0.475)*exp(-0.04);
Else PV_Ll=0;
PV_Pp=(1+0.06)*exp(-0.04);
PDR=sum(PV_Ll)/sum(PV_Pp);
OUTPUT;
END;
drop i;
Proc print;
run;
gibt mir 5 Ausprägungen der Variable PDR. Ich benötige Sie jedoch nur einmal. PDR soll einfach die SUMME der Variable PV_Ll durch die SUMME der Variable PV_Pp teilen, aber nur einmal und nicht für jede Merkmalsausprägung von PV_Ll bzw. PV_Pp.
Wie kriegt man das hin?
Habe mir überlegt, die Summen von PV_Ll und PV_Pp als neue Variablen ausgeben zu lassen, um sie dann zu teilen, aber leider vergebens :( .
Kriege keine Variable als Summe einer anderen Variable hin.
Ich hoffe ich konnte mein Problem schildern?!?
Zudem hoffe ich mit meinem Problem im angebrachten Forum zu sein, sorry wenn nicht!
Über Ratschläge bin ich sehr dankbar!!!!
Mit besten Grüßen
barnaba111
- Anmelden oder Registrieren um Kommentare zu schreiben

Besser spät als nie
EDIT: Hmpf, Doppelpost. Diesen Thread am besten schließen...
Dein Problem war vermutlich, dass SAS sich den Wert einer Variable für die nächste Beobachtung nicht merkt, sondern als Missing initialisiert.
Durch die Sum-Funktion (hat kein Schlüsselwort, s.u.), lässt sich das beheben.
DO i=1 TO 5;
Y=NORMAL(0);
e=NORMAL(0);
V=(0.3**(0.5))*Y+((1-0.3)**(0.5))*e;
D=probit(0.2);
if V LT D Then Ausfall=1;
Else Ausfall=0;
if Ausfall EQ 1 Then PV_Ll=(1-0.475)*exp(-0.04);
Else PV_Ll=0;
PV_Pp=(1+0.06)*exp(-0.04);
PV_Ll_SUM+PV_Ll; /*Kumuliert die Werte von PV_Ll in PV_Ll_SUM */
PV_Pp_SUM+PV_Pp; /* s.o. */
if i=5 then
PDR=PV_Ll_SUM/PV_Pp_SUM; /* Berechnet PDR nur für den letzten Wert */
OUTPUT;
END;
drop i;
run;
Gruß
Simon