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