在SAS中将类型从字符转换为数字



首先,我必须将所有类别格式化为数字,并使用下面的代码完成了这一操作,并取得了成功。我需要将类型从字符转换为数字,以便运行分析。我试过输入功能,但也没用。如有任何帮助,我们将不胜感激。

Proc格式;

Value $gender_num 'Male'=0 'Female'=1;
Value $att 'Yes'=0 'No'=1;
Value $bustrav 'Non-Travel'=1 'Travel_Frequently'=2 'Travel_Rarely'=3;
Value $dpt 'Research & Development'=1 'Human Resources'=2 'Sales'=3;
Value $edfd 'Life Sciences'=1 'Human Resources'=2 'Marketing'=3 'Medical'=4 'Technical Degree'=5 'Other'=6;
Value $ot 'Yes'=0 'No'=1;
Value $ms 'Divorced'=1 'Married'=2 'Single'=3;
Value $jr 'Healthcare Representative'=1 'Human Resources'=2 'Laboratory Technician'=3 'Manager'=4 

"制造总监"=5"研究总监"=6"研究科学家"=7"销售主管"=8"销售代表’=9;

运行;过程打印数据=work.empatt;

format gender $gender_num.;
format attrition $att.;
format businesstravel $bustrav.;
format department $dpt.;
format educationfield $edfd.;
format overtime $ot.;
format maritalstatus $ms.;
format jobrole $jr.;

运行;

您正在将Formats与Informats混合使用。

  • 格式:"如何在屏幕上为您显示数字">
  • Informat:";如何将文本转换为数字">

上面第一步中的代码应该是invalues。然后使用输入进行翻译。你还需要将其分配给一个新的变量——你不能只是将信息与变量关联起来,然后神奇地得到一个数字。

proc format;
invalue sexi
'Male'=1
'Female'=2
;
quit;
data want;
set have;
sex_n = input(sex,sexi.);
run;

如果您愿意,您可以保留相同的变量名;我将在下一步中展示这一点,同时添加一个格式;外观;正确的

proc format;
invalue sexi
'Male'=1
'Female'=2
;
value sexf
1 = 'Male'
2 = 'Female'
;
quit;
data want;
set have;
sex_n = input(sex,sexi.);
format sex_n sexf.;
drop sex;
rename sex_n = sex;
run;

删除原始名称,然后将新名称重命名为原始名称。我使用_n后缀来明确我在做什么,但这不是必需的;格式/informat中的后缀"i"one_answers"f"也没有(事实上,如果你愿意,你可以使用相同的名称(,同样,这只是我用来更容易区分的模式。

最新更新