2017-06-26 2 views
1

Ich erstelle ein SAS-Programm, mit dem der Benutzer das Datum eingeben kann, das untersucht werden soll (als globale Variable). Ich möchte eine zweite Variable erstellen, die drei Monate vor der vom Benutzer erstellten Variable liegt.Erstellen von Beziehungen zwischen SAS-Variablen

%let var1 = [user manually writes the variable in the code] 
%let var2 = [3 months before var1] 

Ich versuchte

var2 = intnx('month', input(put(&var1.,8.),yymmdd8.),-3) 

, die nicht funktioniert.

+1

Sie scheinen Makrovariablen und tatsächliche Datensatzvariablen in Ihrem Code zu mischen. Sie müssen den Benutzern genau mitteilen, welches Format sie verwenden sollen, um Daten in die erste Makrovariable einzugeben, die mit der Methode kompatibel ist, mit der Sie die zweite Makrovariable generieren. Denken Sie daran, dass SAS-Makrovariablen nur Textzeichenfolgen sind. – Tom

Antwort

2

Angenommen, Sie möchten Makrovariablen mit Datumszeichenfolgen im Format YYYYMMDD verwenden und erstellen, dann können Sie dies mit% SYSFUNC() tun.

%let date1=20170213 ; 
%let date2=%sysfunc(intnx(month,%sysfunc(inputn(&date1,yymmdd8)),-3),yymmddn8); 
%put &=date1 &=date2; 


DATE1=20170213 DATE2=20161101 
+0

Das funktioniert. Vielen Dank! –

Verwandte Themen