Frage

Ich habe eine Zeichenfolge, die wie folgt aussieht:

 "ABAR_VAL", "ACQ_EXPTAX_Y",  "ACQ_EXP_TAX", "ADJ_MATHRES2"

Und ich möchte es wie folgt aussehen:

ABAR_VAL ACQ_EXPTAX_Y ACQ_EXP_TAX ADJ_MATHRES2

d. keine Apostrophe oder Komma und Leerzeichen getrennt.

Was ist der sauberste / kürzeste Weg so in SAS 9.1.3 zu tun?

Vorzugsweise etwas entlang der Linien von:

call symput ('MyMacroVariable',compress(????,????,????))

Just klar zu sein, muss das Ergebnis Leerzeichen getrennt, ohne Interpunktion sein, und in einer Makro-Variablen enthalten ist.

War es hilfreich?

Lösung

Hier gehen Sie ..

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;

Andere Tipps

Ist das Teil einer infile Anweisung oder sind Sie wollen in der Tat Makrovariablen erstellen, die diese Werte enthalten? Wenn dieser Teil einer infile Aussage ist, sollten Sie nichts tun müssen, wenn Sie das Trennzeichen gesetzt haben richtig.

infile foo DLM=',' ;

Und ja, können Sie in der Tat die Kompresse Funktion verwenden, um bestimmte Zeichen aus einer Zeichenfolge zu entfernen, entweder in einem Daten Schritt oder als Teil eines Makroaufruf.

COMPRESS(source<,characters-to-remove>)

Beispieldaten:

data temp;
     input a $;
datalines;
"boo" 
"123" 
"abc"
;
run;

Resolve Ausgabe in einem Datum Schritt (anstatt eine Makrovariable erstellen):

data temp2; set temp;
a=compress(a,'"');
run;

Resolve Ausgabe während einer Makrovariablen zu erzeugen:

data _null_; set temp; 
call symput('MyMacroVariable',compress(a,'"'));
run;
%put &MyMacroVariable.;

Sie werden durch die Beobachtungen, um eine Schleife haben die komprimierten Werte die Variable für jeden Datensatz, um zu sehen, ob Sie die letztere Code verwenden. :)

Um mehrere Rohlinge in eine, verwenden compbl zu komprimieren: http: / /www.technion.ac.il/docs/sas/lgref/z0214211.htm

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top