2016-03-24 534 views
1

我想計算分佈的第95百分位數。我認爲我不能使用proc means,因爲我需要這個值,而proc means的輸出是一個表格。我必須使用百分位來過濾數據集,並創建只有大於百分位的觀察值的另一個數據集。 顯然,我不想使用數字值..因爲我想用它在macro如何計算SAS中的百分位數

回答

3

不要將彙總統計信息放入宏變量中。您可能會失去精確度。 這是基於你對問題的神祕描述。

proc means... 
    output out=pct95 pct95= 
    run; 
data subset; 
    if _n_ eq 1 then set pct95; 
    set data; 
    if value < pct95; 
    run; 
+0

從數據集中獲取數字並將其置於宏變量中會丟失精度? –

+1

十進制數例如1/3 –

+0

對不起,我還是很困惑。不會將1/3保存到數據集中的字段也會失去精度?宏變量如何不同? –

1

可以抑制PROC從使用NOPRINT選擇在新標籤頁輸出的結果表示。試試這個:

proc means data = your_data noprint; 
    var variable_name; 
    output out = your_data2 p95=/autoname; 
run;