2016-10-25 2 views
0

Ich habe einen SAS-Datensatz mit den folgenden 13 Feldern:eine neue SAS-Variablengruppe erstellen mit einer bestehenden Variablengruppe

base_price tax_month1-12

Basispreis ist der Preis eines Produkts vor Steuern bezahlt werden und Der Steuermonat ist der Steuerprozentsatz, der für jeden Monat gesammelt werden muss.

Ich möchte eine neue Variablengruppe tax_paid1-12 erstellen, die das Produkt aus dem base_price und jedem der Steuermonate ist.

Gibt es eine effiziente Möglichkeit, dies in SAS zu tun, ohne die Felder 1 zu multiplizieren? Die Anzahl der Monate könnte in der Zukunft variieren, daher möchte ich die Anzahl der Felder in der Variablengruppe nicht fest codieren.

Antwort

1

Leider benötigen Sie einen zusätzlichen Schritt, um die Anzahl der Monate zu berechnen.

Sie können Arrays verwenden, um tax_paid für jeden Monat zu berechnen.

data source; 
    infile datalines; 
    input base_price tax_month1 tax_month2 tax_month3; 
datalines; 
1 2 . 4 
5 6 7 8 
; 
run; 

data _null_; 
    set source; 
    array tax_month(*) tax_month:; 
    call symputx('n', dim(tax_month)); 
    stop; 
run; 

data result; 
    set source; 

    array tax_month(&n) tax_month1-tax_month&n; 
    array tax_paid(&n) tax_paid1-tax_paid&n; 

    do i = 1 to dim(tax_month); 
     tax_paid(i) = base_price * tax_month(i); 
    end; 

    drop i; 
run; 
Verwandte Themen