我有一个数据集,其中需要一些 SAS Datastep 逻辑来填充缺少的列,或者从现有列派生。
数据集看起来更像下面:
mpi v1 v2 v3......v9 v10 v11.....v50
001 a 1.324
002 c 0.876
003 f 11.9
004 r 5.7
005 b 3.3
. . .
. . .
n t 0.4
我实际上开发了以下程序:
/*a*/
IF v2 ('a') AND 0 <= v11 <= 2 THEN DO;
v13 = 1;
v14 =20;
END;
IF v2 IN ('a') AND 2 < v11 <= 3.1 THEN DO;
v13 = 2;
v14 =40;
END;
IF v2 IN ('a') AND 3.1 < v11<= 5.3 THEN DO;
v13 = 3;
v14 =60; END;
IF v2 IN ('a') AND 5.3 < v11 <= 11.5 THEN DO;
v13 = 4;
v14 =80;
END;
IF v2 IN ('a') AND v11 > 11.5 THEN DO;
v13 = 5;
v14 =100;
END;
我的要求是我需要编写相同的程序来在 v2 IN c
、f
、t
、r
等时填充 v13 和 v14;但是 v11 中的边界参数不同(分别用于c
, e
, g
,...),而 v13 和 v14 的类别保持不变。
我想使用 SAS 宏来完成此操作以避免程序重复。你能帮忙解决这个问题吗?