如何在SAS中利用数组对多列执行0-1转换处理
批量变量二值化处理方案
针对你的需求,用SAS Data步结合数组是最高效的批量处理方式,代码如下:
/* 原数据集 */ data have; input id var1 var2 var3; datalines; 1 0 1 0 2 1 1 0 3 0 0 2 4 0 4 1 ; run; /* 批量转换变量:0保留,大于0转为1 */ data want; set have; /* 定义数组,覆盖var1到var3的所有变量,实际场景中可替换为你的变量范围,比如var1 -- var100 */ array vars[*] var1 -- var3; do i = 1 to dim(vars); /* 利用SAS布尔表达式特性:条件为真返回1,假返回0 */ vars[i] = (vars[i] > 0); end; drop i; /* 删除临时循环变量 */ run;
说明
- 数组
vars[*] var1 -- var3会自动识别该变量范围内的所有变量,无需手动指定数量,适合变量较多的场景; - 循环中通过
(vars[i] > 0)直接完成转换,替代传统的if-else判断,代码更简洁; - 处理后生成的
want数据集保留id列,且var1-var3已完成二值化。
内容的提问来源于stack exchange,提问作者jackahall
相关产品推荐
相关产品推荐

