Select 对搜索词进行SAS查找/索引,如果找到,则将搜索词放入新字段(NewN)
使用这段代码,我打算在Name字段中进行动态搜索,如果在NewN中找到,则输入搜索词(宏变量sn_term&I)。 我在输出结果时遇到问题;最后一个搜索词往往会覆盖前一个搜索词。提前谢谢Select 对搜索词进行SAS查找/索引,如果找到,则将搜索词放入新字段(NewN),select,while-loop,find,sas,select-until,Select,While Loop,Find,Sas,Select Until,使用这段代码,我打算在Name字段中进行动态搜索,如果在NewN中找到,则输入搜索词(宏变量sn_term&I)。 我在输出结果时遇到问题;最后一个搜索词往往会覆盖前一个搜索词。提前谢谢 %macro mstrial; data newlbname; set SmplEHM; %let i=1; %Do %until(&i>&p); select; when ((find(Name,"&&sn
%macro mstrial;
data newlbname;
set SmplEHM;
%let i=1;
%Do %until(&i>&p);
select;
when ((find(Name,"&&sn_term&i"))GE 1)
%let Mvname= &&sn_term&i;
NewN = strip(symget('Mvname'));
otherwise ;
end;
%Let i=%eval(&i+1);
%end;
run;
%mend ;
如果我没弄错的话,每个名称值可能包含多个搜索词,这就是为什么要使用DO循环遍历所有词,对吗?那么它应该只有最后找到的术语,因为在每次“成功”的迭代中(当找到术语时),您都在用当前搜索术语重新编写NewN变量。如果希望在一个变量中输出所有变量,则可以执行如下连接:
NewN=catx(",",NewN,&Mvname);
顺便问一下,使用DO WHILE循环有什么具体的原因吗?使用DO更简洁:
%do i=1 %to &p;
...
%end;