如何循环遍历 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;
我正在做一个项目,我有一个包含 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;