题
我有一个字符串,它看起来像这样:
"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(????,????,????))
只要是明确的,其结果需要是单一的空间分离,没有标点符号的,并且包含在一个宏变量。
解决方案
在这里,你去..
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;
其他提示
时的INFILE语句的这部分还是你确实想创建包含这些值宏变量?如果这是一个INFILE语句的一部分,如果你有分隔符正确设置你不需要做任何事情。
infile foo DLM=',' ;
和是的,则可以确实使用压缩功能,以从一个字符串中删除特定的字符,或者在数据步骤或作为宏调用的一部分。
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.;
您将不得不通过观察循环才能看到每个记录的压缩值的变量,如果你使用后者的代码。 :)
要压缩多个坯件成一体,使用compbl: HTTP:/ /www.technion.ac.il/docs/sas/lgref/z0214211.htm
不隶属于 StackOverflow