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 och THRU 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



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow