sas - 如何创建名称与两个数组变量名称连接的变量
问题描述
我有一个具有成员 ID 和 79 个二进制变量的 HCC 数据集 DATA_HCC:
Member_ID HCC1 HCC2 HCC6 HCC8 ... HCC189
XXXXXXX1 1 0 1 0 ... 0
XXXXXXX2 0 0 1 0 ... 0
XXXXXXX3 0 1 0 0 ... 1
我正在尝试创建一个输出数据集,该数据集可以为这 79 个变量的所有组合创建新的二进制变量。每个新变量表示成员是否将两个变量都设为 1。
%LET hccList = HCC1 HCC2 HCC6 HCC8 HCC9 HCC10 HCC11 HCC12 HCC17 HCC18 HCC19 HCC21 HCC22 HCC23 HCC27
HCC28 HCC29 HCC33 HCC34 HCC35 HCC39 HCC40 HCC46 HCC47 HCC48 HCC54 HCC55 HCC57 HCC58
HCC70 HCC71 HCC72 HCC73 HCC74 HCC75 HCC76 HCC77 HCC78 HCC79 HCC80 HCC82 HCC83 HCC84
HCC85 HCC86 HCC87 HCC88 HCC96 HCC99 HCC100 HCC103 HCC104 HCC106 HCC107 HCC108 HCC110
HCC111 HCC112 HCC114 HCC115 HCC122 HCC124 HCC134 HCC135 HCC136 HCC137 HCC157 HCC158
HCC161 HCC162 HCC166 HCC167 HCC169 HCC170 HCC173 HCC176 HCC186 HCC188 HCC189;
DATA COUNT_HCC; SET DATA_HCC;
ARRAY HCC [*] &hccList.;
DO i = 1 TO DIM(HCC);
DO j = i+1 TO DIM(HCC);
%LET HCC_COMBO = CATX('_', VARNAME(HCC[i]), VARNAME(HCC[j]));
&HCC_COMBO. = MIN(HCC[i], HCC[j]);
END;
END;
RUN;
我尝试使用 CATX 函数来连接两个变量名,但它不起作用。
这是我得到的日志错误:
ERROR: Undeclared array referenced: CATX.
ERROR: Variable CATX has not been declared as an array.
ERROR 71-185: The VARNAME function call does not have enough arguments.
结果输出示例如下:
Member_ID HCC1_HCC2 HCC1_HCC6 HCC1_HCC8 ... HCC188_HCC189
XXXXXXX1 0 1 0 ... 0
XXXXXXX2 0 0 0 ... 0
XXXXXXX3 0 0 0 ... 1
解决方案
要实现动态变量名称生成,请使用宏来创建您需要的变量。以下代码生成动态变量名称并生成数据步骤代码以创建变量。
%macro get_hcc_combo_mins;
%do i = 1 %to %sysfunc(countw(&hccList.));
%do j = %eval(&i.+1) %to %sysfunc(countw(&hccList.));
%let hcc1 = %scan(&hccList., &i.);
%let hcc2 = %scan(&hccList., &j.);
&hcc1._&hcc2. = min(&hcc1., &hcc2.);
%end;
%end;
%mend;
DATA COUNT_HCC; SET DATA_HCC;
ARRAY HCC [*] &hccList.;
%get_hcc_combo_mins;
RUN;
宏%get_hcc_combo_mins
在数据步骤中生成此代码:
HCC1_HCC2 = min(HCC1, HCC2);
HCC1_HCC6 = min(HCC1, HCC6);
HCC1_HCC8 = min(HCC1, HCC8);
...
可能有其他方法可以在我不知道的一个数据步骤中完成这一切,但宏可以完成这项工作。
推荐阅读
- javascript - 未找到用户。从应用程序连接到 mysql 服务器
- reactjs - 来自 Apollo-Client 的突变问题
- java - 寻找一种方法来找到一个特定的块
- javascript - 如何在 discord.js 中使用 JSON 数据库制作排行榜
- python - 为什么 Scipy rv_discrete 总是返回 1
- ios - 如何在 React Native 中结合 Podfile 中的 Post Install?
- bash - 为什么等待对命名管道中的读取器进程不起作用?
- python - 蟒蛇 | 有没有办法执行 inspect.getmembers() 返回的函数
- r - R - 使用 tydiverse 和 xml2 将 XML 从多个 URL 解析到数据框
- c# - C#如何将文本框中的值保存为字符串?