sas
Skapa makrovariabler
Sök…
Introduktion
Att använda makrovariabler i alla dina SAS-program är en grundläggande funktionalitet som alla SAS-programmerare måste känna till. Att använda makrovariabler kan hjälpa dig att hålla din kod enkel och generisk. Generisk kod är återanvändbar kod.
Med hjälp av% LET
Jag skulle beskriva% LET som det enklaste sättet att skapa en makrovariabel i SAS.
%LET variableName = variableValue;
Nu, var du än använder &variableName
kommer det att lösa sig till variableValue
.
OBS! Du kanske vill överväga att
variableValue
alla på egen hand kan ge dig syntaxfel beroende på vad värdet är och hur det används. Om det till exempel är ett datum och du använder det i VAREN till ett PROC SQL-uttalande måste det skrivas som"&variableName"d
att fungera korrekt.
Med PROC SQL
Att använda PROC SQL är ett bra sätt att få snabba resultat från en tabell och kasta dem i variabler. Jag brukar upptäcka att när jag vill få ett antal räkningar som jag just laddade till en tabell, kan jag få det räknet till en variabel med ett snabbt PROC SQL-samtal.
PROC SQL;
SELECT
COUNT(*) INTO:aVariable
FROM
MyTable
;QUIT;
I exemplet ovan kommer aVariable
att representera hur många poster som finns i MyTable
.
Du kan också använda PROC SQL för att skapa flera makrovariabler.
PROC SQL;
SELECT
a,
b,
c INTO:aVariable, :bVariable, :cVariable
FROM
MyTable
;QUIT;
I exemplet ovan kommer variablerna som skapas i INTO-satset att matcha upp till de kolumner som dras i den ordning de returneras från SELECT-sats. Men endast den första raden med resultat kommer att användas för att fylla de tre variablerna.
Om du vill lagra mer än en rad och du har version 6.11 eller senare använder du följande exempel:
PROC SQL;
SELECT DISTINCT
a,
b,
c INTO :aVariable1 - :aVariable5,
:bVariable1 - :bVariable5,
:cVariable1 - :cVariable5
FROM
MyTable
;QUIT;
Nyckelorden
THROUGH
ochTHRU
kan han använde en stället för streck-
Använda samtalssymput () i ett DATA-steg
DATA _null_;
CALL SYMPUT('testVariable','testValueText');
;RUN;
I exemplet ovan, %PUT &testVariable;
kommer att lösa till testvalueText
.
Du kan hitta behovet av att formatera din variabel inom SYMPUT () -samtalet.
DATA _null_;
CALL SYMPUT('testDate',COMPRESS(PUT(today(),date9.)));
;RUN;
I exemplet ovan, %PUT &testDate;
kommer att lösa till 10MAR2017