質問

私はこのようになります文字列を持っています:

 "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