如何循环遍历 SAS 中的字符串值列表

How to loop through a list of string values in SAS

我正在做一个项目,我有一个包含 45 个代码的列表。我的目标是找到所有以代码的前 3 个字符开头的代码。

例如,我需要找到所有以 N31、N32、N33....N34 开头的代码。我已经想出如何在 SAS 中手动执行此操作(使用像 N31_ 这样的代码或像 N32_ 这样的代码)

data slice;
set dat.all_hcpcs_nitos;

where nitos like "N30_"
or nitos like "N31_";
run;

我不希望硬编码这 45 次,我希望找到一些……更优雅的东西。如果我在 python 中,我会列出 45 个代码,然后遍历列表中的每个代码。我不确定如何在 SAS 中执行此类过程。

根据我的搜索,我可能需要做一个 %let codes = "list of codes"。我也尝试过像 i = 1 到 8 这样的事情,并尝试像这样进行搜索:

data slice;
set dat.all_hcpcs_nitos;

%do i = 1 to 8;
where nitos like "N3&i._";
%end;
run;

提前感谢您提出任何建议。我一直在挑战自己让我的代码更紧凑,而 SAS 宏总是让我感到困惑。

只需将 IN 运算符与 : 修饰符一起使用即可让它进行修剪比较。 示例:

proc print data=sashelp.class;
  where name in: ('Ali','Bar');
run;