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

在SAS中将字符类型转换为数字类型,sas,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 'Rese

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

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

运行; Proc Print data=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.;

运行

你把信息和格式混为一谈

  • 格式:“如何在屏幕上为您显示数字?”
  • Informat:“如何将文本转换为数字?”
上面第一步中的代码应该是
invalue
s。然后使用输入进行翻译。您还需要将其分配给一个新变量-您不能只将informat与变量关联,然后神奇地获得一个数字

proc format;
  invalue sexi
     'Male'=1
     'Female'=2
  ;
quit;

data want;
  set have;
  sex_n = input(sex,sexi.);
run;
如果愿意,您可以保留相同的变量名;在下一步中,我将展示这一点,并添加一个格式,使值“看起来”正确


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

格式和informat语句通常使用动词attach。动词apply更适用于PUT()和INPUT()函数的功能。我明白你的意思,不过我想说apply可以有相同的含义(例如,你在孩子的手上贴一张标签)。SAS本身使用associate,所以我切换到了它。谢谢非常感谢。这很有效!!
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;