News Artikel Foren Join Projekte List Links Random Über Redscope Previous Next Startseite › Foren › Allgemeine Fragen zu SAS Hilfe bei Makro (mehrere Variablen mit bestimmten Merkmalen) 11 February, 2009 - 15:57 — Arjun Hallo Zusammen, in den folgenden Sas-Codes habe ich ein paar Schwierigkeiten. Mit diesem Makro werden Kreuz-Tabellen für verschiedene Variablen erstellt. Wie kann ich diesen noch eine individuelle Überschrift geben (wenn pth dann Titel='blablabla' usw, so dass jede Tabelle (je Tabelle eine Variable) einen eigenen Titel hat. %MACRO test3(); %LOCAL i var; %DO i = 1 %TO 10; %LET var1 = %SCAN(pth_1 awd_1 wtm_1 ctm_1 spd_1 act_1 stp_1 rst_1 rtm_1 rdu_1,&i); %LET var2 = %SCAN(pth_2 awd_2 wtm_2 ctm_2 spd_2 act_2 stp_2 rst_2 rtm_2 rdu_2,&i); %LET var3 = %SCAN(pth_3 awd_3 wtm_3 ctm_3 spd_3 act_3 stp_3 rst_3 rtm_3 rdu_3,&i); proc report data=cust nowindows headskip; column merkmal1 merkmal2 merkmal3 &var1 &var2 &var3 ; define merkmal1 / group center width=12; define merkmal2 / group center width=10; define merkmal3 / descending group center width=7; define &var1 / format=numx8.2 analysis mean '0-10 Minuten' ; define &var2 / format=numx8.2 analysis mean '10-20 Minuten' ; define &var3 / format=numx8.2 analysis mean '20-30 Minuten' ; break after Medikament / skip suppress; rbreak after / skip ; format merkmal1 $m1fmt.; title1 'activity (%)'; run; %end; %mend; %test3; Es werden das Minimum und Maximum aus einer Variable ermittelt und als Achsenwert weitergegeben. Aber es funktioniert nicht, dass mit "label=(a=90)" die Beschriftung um 90° gedreht wird und das die where-Anweisung scheinbar nur für min und max gilt und nicht mehr für die Variable die im Boxplot dargestellt wird. Dort hat es den Anschein das Merkmal1 und Merkmal2 aus der gesamten SAS-Datei stammen und nicht aus der in der nur Merkmal3 und Merkmal4 vorhanden sind. %MACRO plt(); %LOCAL i var min max; %DO i = 1 %TO 10; %LET var = %SCAN(pth_1 awd_1 wtm_1 ctm_1 spd_1 act_1 stp_1 rst_1 rtm_1 rdu_1,&i); PROC SQL NOPRINT; SELECT MIN(&var) INTO : min FROM oft_m WHERE merkmal3='m' und merkmal4=1 ; SELECT MAX(&var) INTO : max FROM oft_m WHERE merkmal3='m' und merkmal4=1 ; QUIT; AXIS1 order = &min TO &max label=(a=90); proc boxplot data=oft_m; title ' '; title2 'im Zeitabschnitt1'; plot (&var)*merkmal2 (merkmal1) / cboxes = dagr cboxfill = ywh cframe = vligb vaxis = axis1 haxis = axis2 run; %END; %MEND plt; %plt; Es sind verschiedene Merkmale die ich miteinamder kombinieren will und dann die Variablen vergleiche. Damit soll festgestellt werden ob es einen Unterschied gibt. Diese habe ich bis jetzt alle manuell zusammengestellt und in je eine SAS-Datei geschrieben. Da dies sehr aufwendig ist will ich dazu ein Makros chreiben. Aber wie automatisiere ich es das immer 1 Merkmal geändert wird und die restlichen gleichbleiben. Diese beiden Stichproben werden dann mit der proc npar1way verglichen. m1 m2 m3 m4 1111 2111 1211 2211 .... .... 1223 2223 Kann man den Output auch nur in einer Datei untereinander ausgeben? Den Datastep habe ich nur eingeführt weil ich nicht wußte wie man in der Prozedur eine Variable mit festen Wert deklariert. data sort_m_bw; Set sort; Where merkmal2='m' and merkmal1='BW_E'; Run; proc sort data=sort_m_bw; by merkmal4 merkmal3; run; proc npar1way wilcoxon data=sort_m_bw noprint; class merkmal3; by merkmal4; var pth awd wtm ctm spd act stp rst rtm rdu ; output out=cust11 Wilcoxon EDF; run; data cust11; Set cust11; merkmal2='m'; merkmal1='BW_E'; run; Viele Grüße und vielen Dank! Foren: Allgemeine Fragen zu SAS Log in or register to post comments