[英]SAS - Using Global Normalization Factor w/o Using Macro Variable
免責聲明:這主要是因為我有使用宏變量(概述如下)功能的解決方案,因此可能不適合這個網站風格/最佳實踐的問題。
鑒於非標准化的風險評分,例如數據集:
數據集_1:
Person, Score
A, 1.00
B, 4.00
C, 2.35
...
我想規范化算術平均值為1.0。 我可以匯總此數據集,得出平均風險評分,然后將每個觀察結果除以該風險評分。 例如:
程序摘要....; 產生具有一個觀察值的數據集:
數據集_2:
Avg_Score
2.5
然后使用:
Data _null_; Set Dataset_2;
Call Symput("NormFactor", Avg_Score);
Run;
和:
Data NormalizedScores;
Set Dataset_1;
Score_Norm = Score / &NormFactor.;
Run;
然而,這似乎是垃圾代碼給我。 有更好的方法嗎?
如果您想以老式的方式進行操作,那么有比宏變量更好的方法; 只是合並數據集,如果只有一個平均值,則將其設置。 (如果有BY變量,則合並。)
例如:
data dataset_1;
input Person $ Score;
datalines;
A 1.00
B 4.00
C 2.35
;
run;
proc means data=dataset_1 noprint;
var score;
output out=dataset_2 mean=avg_score;
run;
Data NormalizedScores;
set dataset_1;
if _n_=1 then set dataset_2;
Score_Norm = Score / avg_score;
Run;
來自SET
語句的變量將自動保留,並且由於我們僅讀入第二個數據集一次,因此它們不會被替換或設置為missing。
更光滑的方法是使用PROC STDIZE (這是PROC STANDARD
的較新版本),但是我不清楚是否有一種特定的方法可以准確地實現您想要的功能。
嘗試PROC STANDARD
data test;
input Person $ Score;
datalines;
A 1.00
B 4.00
C 2.35
;
proc standard data=test out=test2 mean=1;
var Score;
run;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.