2017-10-27 3 views
2

Ich habe einen Datensatz mit einer Basisvariablen und 1000 generiert. Die Basisvariable ist ps_a_pc, die Szenarien heißen ps_a_var1 ... ps_a_var1000.SAS - Perzentil aus Zeile

Der Datensatz ist wie folgt:

ps_a_pc ps_a_var1 .... ps_a_var1000 
    0  1  .... 5 
    3  6  .... 14 

Nun würde Ich mag für jede Zeile seines Minimalwert, Maximalwert und Perzentile (20%, 40%, 60%, 80%) berechnen.

Es ist leicht, Maximal- und Minimalwert zu erhalten:

data MinMaxRows; 
    set mydata.tot_i; 
array x [1000] PS_a_var1-PS_a_var1000; 
min = min(of x[*],ps_a_pc); 
max = max(of x[*],ps_a_pc); 
run; 

aber gibt es eine einfache Art und Weise, wie Perzentile für jede Reihe zu bekommen? Die einzige Lösung, die mir in den Sinn kommt, ist, den Datensatz zu transponieren und ihn mit der univariaten Funktion zu berechnen.

Vielen Dank für jeden Vorschlag.

Antwort

1

Sie können die PCTL-Funktion verwenden.

data want; 
    set have; 
    pct80 = pctl(80, of ps_a_var1-ps_a_var1000); 
run; 

Offensichtlich stellen Sie die ‚80‘ Wert wie für die anderen Perzentile erforderlich.

+0

vielen Dank –