我正在修改駐留在SAS宏中的數據步驟。目前使用單一格式爲整個數據集創建一個新字段。我試圖將其修改爲在數據集的不同子集上使用不同格式的位置。 (我有一個字段,指示該行屬於哪個子集。)如何根據數據值應用不同的格式
我可以用一堆if語句來做到這一點,但如果將來類別數量發生變化,則需要更改。我想我可以通過使用調用symput和resolve來實現我想要的,但我不確定它的語法是什麼。我可以做到這一點,而不訴諸如果陳述?
我正在修改駐留在SAS宏中的數據步驟。目前使用單一格式爲整個數據集創建一個新字段。我試圖將其修改爲在數據集的不同子集上使用不同格式的位置。 (我有一個字段,指示該行屬於哪個子集。)如何根據數據值應用不同的格式
我可以用一堆if語句來做到這一點,但如果將來類別數量發生變化,則需要更改。我想我可以通過使用調用symput和resolve來實現我想要的,但我不確定它的語法是什麼。我可以做到這一點,而不訴諸如果陳述?
你的問題是不完全清楚,但如果你想要做這樣的事情
newvar = put(oldvar,MYFMT.)
- >
if x=1 then newvar=put(oldvar,MYFMT.);
else newvar=put(oldvar,MYFMT2.);
但是,如果沒有所有的if語句,你可以使用PUTN
或PUTC
,它允許您在運行時指定格式。
newvar = putn(oldvar,fmtvar); *optionally can specify w and d as separate arguments also;
這正是我的意思,使用putc比嘗試使用call symput和resolve要簡單得多。 –
Symput/resolve無法正常工作;如果您使用'put',則在編譯階段需要確定格式。 – Joe
好問題 - 我不確定使這種動態的最佳方式。 +1 – DomPazz