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

 "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 &macrovar;

其他提示

时的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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top