2013-12-11 29 views
2

我正在修改駐留在SAS宏中的數據步驟。目前使用單一格式爲整個數據集創建一個新字段。我試圖將其修改爲在數據集的不同子集上使用不同格式的位置。 (我有一個字段,指示該行屬於哪個子集。)如何根據數據值應用不同的格式

我可以用一堆if語句來做到這一點,但如果將來類別數量發生變化,則需要更改。我想我可以通過使用調用symput和resolve來實現我想要的,但我不確定它的語法是什麼。我可以做到這一點,而不訴諸如果陳述?

+0

好問題 - 我不確定使這種動態的最佳方式。 +1 – DomPazz

回答

2

你的問題是不完全清楚,但如果你想要做這樣的事情

newvar = put(oldvar,MYFMT.) 

- >

if x=1 then newvar=put(oldvar,MYFMT.); 
else newvar=put(oldvar,MYFMT2.); 

但是,如果沒有所有的if語句,你可以使用PUTNPUTC ,它允許您在運行時指定格式。

newvar = putn(oldvar,fmtvar); *optionally can specify w and d as separate arguments also; 
+0

這正是我的意思,使用putc比嘗試使用call symput和resolve要簡單得多。 –

+0

Symput/resolve無法正常工作;如果您使用'put',則在編譯階段需要確定格式。 – Joe

相關問題