我有一个看起来像这样的字符串:
"ABAR_VAL", "ACQ_EXPTAX_Y", "ACQ_EXP_TAX", "ADJ_MATHRES2"
我希望它看起来像这样:
ABAR_VAL ACQ_EXPTAX_Y ACQ_EXP_TAX ADJ_MATHRES2
即。没有撇号或逗号和单个空格分开。
SAS 9.1.3中最干净/最短的方法是什么?
最好是:
call symput ('MyMacroVariable',compress(????,????,????))
为了清楚起见,结果需要单个空格分隔,没有标点符号,并包含在宏变量中。
答案 0 :(得分:6)
你去..
data test;
var1='"ABAR_VAL", "ACQ_EXPTAX_Y", "ACQ_EXP_TAX", "ADJ_MATHRES2"';
run;
data test2;
set test;
call symput('macrovar',COMPBL( COMPRESS( var1,'",',) ) );
run;
%put ¯ovar;
答案 1 :(得分:2)
这是infile语句的一部分还是你确实想要创建包含这些值的宏变量?如果这是infile语句的一部分,如果正确设置了分隔符,则不需要执行任何操作。
infile foo DLM=',' ;
是的,您确实可以使用compress函数从字符串中删除特定字符,无论是在数据步骤中还是作为宏调用的一部分。
COMPRESS(source<,characters-to-remove>)
示例数据:
data temp;
input a $;
datalines;
"boo"
"123"
"abc"
;
run;
解决数据步骤中的问题(而不是创建宏变量):
data temp2; set temp;
a=compress(a,'"');
run;
在生成宏变量时解决问题:
data _null_; set temp;
call symput('MyMacroVariable',compress(a,'"'));
run;
%put &MyMacroVariable.;
如果使用后一个代码,则必须遍历观察结果才能看到压缩值是每个记录的变量。 :)
答案 2 :(得分:0)
要将多个空格压缩为一个空格,请使用compbl:http://www.technion.ac.il/docs/sas/lgref/z0214211.htm