如何在SAS Enterprise Miner中将序数字符串转换为对应数值
SAS Enterprise Miner字符串类别转数值操作方案
方法1:使用Transform Variables节点(无代码操作,适配常规需求)
- 将你的源数据集导入SAS EM项目后,拖拽Transform Variables节点与数据源节点相连
- 双击打开节点配置面板,选中Gender、Size、Color三个字符类型字段,在变量属性栏将*转换方法(Method)*设置为「Recode」
- 点击「Recode」按钮进入映射配置界面,按照你的业务需求给每个字符类别分配对应的数值:
- 可直接手动录入每个取值的映射结果,也可以批量设置排序规则自动生成编码
- 如果同个类别存在大小写差异(比如示例中的small和Small),可以先统一字段大小写再做映射,避免出现重复类别
- 配置完成后保存并运行节点,输出的数据集就是数值化后的结果,若需要保留原始字符字段,可在配置页勾选「保留原变量」选项。
方法2:使用SAS Code节点(灵活适配自定义规则)
如果你的映射规则比较复杂,或者需要批量处理多字段,可以用SAS代码节点实现:
- 拖拽SAS Code节点连接到数据源节点,打开代码编辑面板,输入以下逻辑代码:
/* 读取输入数据集 */ data em_out; set &em_import; /* 映射Gender字段 */ if Gender = 'Male' then Gender_num = 0; else if Gender = 'Female' then Gender_num = 1; /* 映射Size字段,统一处理大小写 */ length temp_size $10; temp_size = upcase(Size); if temp_size = 'SMALL' then Size_num = 0; else if temp_size = 'LARGE' then Size_num = 1; else if temp_size = 'MEDIUM' then Size_num = 2; drop temp_size Size Gender Color; /* 映射Color字段 */ if Color = 'Red' then Color_num = 0; else if Color = 'Blue' then Color_num = 1; else if Color = 'Black' then Color_num = 2; /* 重命名为原字段名 */ rename Gender_num=Gender Size_num=Size Color_num=Color; run;
- 运行节点即可得到转换完成的数据集,代码中的映射值可以根据你的实际需求调整。
内容的提问来源于stack exchange,提问作者Oladosu
相关产品推荐
相关产品推荐

