我的公司剛剛從R切換到SAS,我正在將大量的R代碼轉換爲SAS。我在SAS中動態聲明變量(宏變量)時遇到了一個大問題。SAS動態聲明宏變量
例如,我的一個進程需要考慮列的平均值,然後在許多步驟中將其應用於整個代碼。
%let numm =0;
我試過以下與我的numm變量,但這兩種方法不工作,我似乎無法找到任何聯機。
PROC MEANS DATA = ASSGN3.COMPLETE mean;
#does not work
&numm = VAR MNGPAY;
run;
Proc SQL;
#does not work
&numm =(Select avg(Payment) from CORP.INV);
quit;
宏變量通常不應該存儲數據值。他們只是文字。除此之外,他們沒有數字精度的概念,所以在轉換爲宏變量時會失去精度。在很多方面SAS比SQL更像SQL;將你的意思存儲在數據集中。 – Joe 2014-08-30 16:04:49
是的,我一定注意到SAS更像是一個可以執行統計的數據管理系統。對於高水平分析,R似乎更好。 – Chris 2014-08-30 18:32:33
SAS的高級分析能力與R相當,而且對於某些事情來說速度要快很多。它不同,需要以不同的方式進行思考。你在做什麼就像在C中使用全局變量(或R,就此而言)在一個函數中;你不會在SAS中這樣做。然而,通過更簡單的方式,使用更多的慣用過程可以實現相同的結果。 – Joe 2014-08-30 20:33:11