我正在使用SAS,希望记录具有50多种不同定性假人的变量。例如,美国的州。
在这种情况下,我只想将它们减少为4或5个水平虚拟变量作为定量变量。
我有几个想法,例如使用if / else语句,但是,问题是我必须写下并在SAS中指定每个区域名称,并且代码看起来很沉重。
还有其他没有冗余代码的方法吗?还是避免写每个特定的变量名?在SAS中。
任何想法都值得赞赏!
答案 0 :(得分:1)
方法1:
使用IN,但是您仍然必须列出变量。您也可以通过格式来实现,但是无论如何都必须先定义格式。
if state in ('AL', 'AK', 'AZ' ... etc) then state_group = 1;
else if state in ( .... ) then state_group = 2;
方法2:
对于格式,请使用PROC FORMAT创建格式,然后应用它。
proc format;
value $ state_grp_fmt
'AL', 'AK', 'AZ' = 1
'DC', 'NC' = 2 ;
run;
然后可以将其与PUT语句一起使用。
State_Group = put(state, state_grp_fmt);