我有一串由制表符分隔的单词。
让我说我想用括号将每个单词括起来并添加“ sum”
所以我使用查找/替换功能将\ t替换为)\ t,sum(。
来自
A B C D E
我明白了
sum(A),sum(B),sum(C),sum(D),sum(E)
但是如果我想重复这些单词怎么办。
即
来自:
A B C D E
到
sum(A)作为A,sum(B)作为B,sum(C)作为C,sum(D)作为D,sum(E)作为E?
https://docs.microsoft.com/en-us/dotnet/standard/base-types/substitutions-in-regular-expressions
没有用。
有问题的环境是SAS EG 7.1
答案 0 :(得分:2)
如果您不知道如何使编辑器为您生成代码,为什么不创建一个宏以在提交给SAS的代码中为您执行此操作呢?
您的示例将转换为这样的宏:
%macro sumlist(varlist);
%local i word sep;
%do i=1 %to %sysfunc(countw(&varlist));
%let word=%scan(&varlist,&i);
&sep.sum(&word) as &word
%let sep=,;
%end;
%mend sumlist;
然后您可以在程序中调用以生成SQL语句的一部分。
proc sql ;
create table want as
select %sumlist(a b c d e)
from have
;
quit;
然后,如果您确实需要编辑器来帮助您创建代码,则只在谈论在选定的变量名列表周围添加常量前缀%sumlist(
和后缀)
。