Berechnung der Summe mehrerer

Werbung
News
Artikel
Foren
Join
Projekte
List
Links
Random
Über Redscope
Previous
Next
Startseite › Foren › Allgemeine Fragen zu SAS
Berechnung der Summe mehrerer zusammengehöriger Reihen
9 May, 2011 - 12:48 — tmy84
Hallo zusammen,
ich komme momentan bei diesem Problem einfach nicht weiter.
Ich habe die folgende beispielhafte Datenlage:
Nr A B C D E
1 . . . -2 .
1..1..
1 -4 . . . .
2..3..
2..3..
usw.
mit . = missing value
Mein Vorhaben hierbei soll sein, die aggregierte Summe aller Reihen mit derselben Nr zu erstellen.
Die neu entstehende Tabelle sollte dann jede Nr nur noch einmal beinhalten.
Sprich, die Tabelle die ich erstellen möchte soll danach wie folgt aussehen:
Nr Summe
1 -5
26
usw.
Ich hoffe mit der Berschreibung ist etwas anzufangen. Ich benötige diese Berechnung für eine
Seminararbeit und bin leider bei weitem kein SAS-Profi.
Viele Grüße
Timm
Foren:
Allgemeine Fragen zu SAS
Log in or register to post comments
Hallo Timm, das könntest du
Hallo Timm,
das könntest du über ein Proc Summary machen:
proc summary data = xxx missing;
types nr;
class nr;
var a b c d e;
output out=xxx sum=;
run;
9 May, 2011 - 13:19 — Kotulla
dann hättest du die summe von a b c d e und jede nummer nur einmal. Willst du eine
Gesamtsumme haben kannst du ja dann im Datastep summieren:
data xxx;
set xxx;
neu = a + b + c + d + e
run;
Ich hoffe, das hilft dir weiter.
Viele Grüße
Thomas
Log in or register to post comments
Kotullas ist eleganter...
9 May, 2011 - 13:52 — Frederik_Bloch
...aber wenn du's in einem Rutsch UND in SQL haben willst, kannst du auch diese Variante
nehmen ;)
data bla;
input nr a b c d e;
datalines;
1 . . -2 . .
1 . 1 . . .
1 -4 . . . .
2 . . 3 . .
2 . . 3 . .
;
run;
proc sql;
create table erg as
select nr,
sum(a,b,c,d,e) as erg
from (select nr,
sum(a) as a,
sum(b) as b,
sum(c) as c,
sum(d) as d,
sum(e) as e
from bla
group by nr);
quit;
Log in or register to post comments
Geht auch eleganter und in einem Rutsch;)
9 May, 2011 - 14:07 — JanHeuer
proc sql;
create table erg as
select nr,
sum(sum(a,b,c,d,e)) as erg
from bla
group by nr
;
quit;
Log in or register to post comments
Vielen Dank
16 May, 2011 - 15:49 — tmy84
Zu aller erst, vielen Dank für die Denkanstöße. Ich habe es hinbekommen.
Ich möchte jedoch gleich eine weitere Frage loswerden. Ich suche nach etwas, was wie nodupkey
unter Nebenbedingungen funktioniert.
Am Bsp.:
Nr A B C
1010
1100
1010
2 .......
.
.
.
Ziel:
Nr A B C
1010
1100
2 .......
.
.
Sprich, weist eine Nr eine der Ausprägungen (A,B,C) mehrfach auf, so sollen die doppelten gelöscht
werden. So das pro Nr maximal jede Ausprägung einmal vorkommen darf.
Schon einmal vielen Dank für die Hilfe im voraus!
VG
Timm
Log in or register to post comments
Hallo Timm, so ganz hab ich
16 May, 2011 - 16:23 — JanHeuer
Hallo Timm,
so ganz hab ich es noch nicht verstanden. Nodupkey geht doch bei deinem Beispiel.
data test;
input Nr A B C;
cards;
1 0 1 0
1 1 0 0
1 0 1 0
run;
Proc sort data=test out=erg1 nodupkey;
by nr a b c;
run;
/* oder */
Proc sql;
create table erg2 as select distinct nr, a, b, c from test;
Quit;
Schöne Grüße
Jan
Log in or register to post comments
Dankeschön! Hat super
Dankeschön! Hat super funtkioniert.
Log in or register to post comments
17 May, 2011 - 10:12 — tmy84
Herunterladen