例如,我创建了一个格式NY,如下所示:
Proc format;
value $NY
'Y'='Yes'
'N'='No'
;
run;
所以我想应用以上格式将值解码为'是'或者'否'在存在编码值Y或N的所有SAS数据集中。
答案 0 :(得分:0)
要完成上述操作,您需要处理所有相关数据集,例如
* Assuming no variable names starting with underscore in data *;
data _NULL_;
set ds end=_last;
array _char [*] _character_;
length _vars $4000;
retain _vars;
if _N_=1 then do _i=1 to dim(_char);
* initialize a list of all character variables *;
_vars=cats(_vars,"_",vname(_char[_i]));
end;
do _i=1 to dim(_char);
* drop vars with values not in Y, N *;
if _char[_i] not in ('Y', 'N') then _vars=tranwrd(_vars,cats("_",vname(_char[_i])),"");
end;
if _last then call symput("vars", translate(_vars," ","_"));
run;
proc datasets lib=work;
modify ds;
format &vars $ny.;
quit;
如果至少有一个变量符合条件,则上述示例适用于一个数据集。这会将您的格式应用于包含所有空值的字符变量。您可以使用宏在多个数据集上自动执行此代码。