1

我有一个看起来像这样的字符串:

 "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(????,????,????))

为了清楚起见,结果需要用单个空格分隔,没有标点符号,并且包含在宏变量中。

4

3 回答 3

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 &macrovar;
于 2009-04-05T14:29:16.897 回答
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.;

如果您使用后面的代码,您必须遍历观察结果才能查看每个记录的变量的压缩值。:)

于 2009-04-03T20:16:12.977 回答
0

要将多个空白压缩为一个,请使用 compbl :http ://www.technion.ac.il/docs/sas/lgref/z0214211.htm

于 2009-04-05T04:05:17.223 回答