如何在SAS中向变量列表中添加逗号

如何在SAS中向变量列表中添加逗号,sas,Sas,我是SAS的新手,如果这个问题看起来很简单,请原谅我的无知(在其他语言中,这是一个相当琐碎的任务)。 如何转换%宏中的变量列表: %Let var_list=var1 var2 var3 进入这个 “var1”、“var2”、“var3”您可以使用SASjs库中的函数,并在一行中完成: %Let var_list = var1 var2 var3; %put %mf_getquotedstr(&var_list,quote=D); /* D for Double quote */ 不

我是SAS的新手,如果这个问题看起来很简单,请原谅我的无知(在其他语言中,这是一个相当琐碎的任务)。 如何转换
%宏中的变量列表

%Let var_list=var1 var2 var3

进入这个

“var1”、“var2”、“var3”

您可以使用SASjs库中的函数,并在一行中完成:

%Let var_list = var1 var2 var3;

%put %mf_getquotedstr(&var_list,quote=D); /* D for Double quote */

不使用SASjs宏核心库:

%let var_list = var1 var2 var3;
%let var_list=%bquote(")%qsysfunc(prxchange(s/\s+/%nrbquote(",")/,-1,&var_list))%bquote(");
%put &=var_list.; /* VAR_LIST="var1","var2","var3" */

这是一个常见问题,但我没有找到其他问题的链接。 可以使用TRANWRD()函数将空格转换为“
”、“
”(只要生成的字符串小于数据步长最大值32767字节)。确保将多个空格减少为一个

%let var_list = var1   var2   var3 ;
%put "%sysfunc(tranwrd(%sysfunc(compbl(&var_list)),%str( ),%str(",")))" ;
结果:

"var1","var2","var3"

我喜欢这个。我刚才看到你在SAS社区的某个地方发布了它,这是我遇到的技巧之一。我将其转换为一个名为
cquote
的fcmp函数,我一直在数据步骤、sql和宏中使用该函数。用户可以为宏或程序变量输入空格分隔的列表,然后将它们转换为正确的格式。例如,
%let exclude=A B C;%让excludecq=%sysfunc(cquote(&exclude));“