Hilfe bei Makro (mehrere Variablen mit bestimmten Merkmalen)

Werbung
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
Herunterladen