Domanda

Ho una stringa che assomiglia a questo:

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

E mi piacerebbe che assomigliare a questo:

ABAR_VAL ACQ_EXPTAX_Y ACQ_EXP_TAX ADJ_MATHRES2

vale a dire. nessun apostrofi o virgole e spazi singoli separati.

Qual è il / via più breve pulito a farlo in SAS 9.1.3?

Preferibilmente qualcosa sulla falsariga di:

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

Per essere chiari, il risultato deve essere singolo spazio separato, privo di punteggiatura, e contenuto in una variabile macro.

È stato utile?

Soluzione

Qui si va ..

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;

Altri suggerimenti

E 'questo parte di una dichiarazione infile o stai davvero voglia di creare variabili macro che contengono questi valori? Se questo è parte di una dichiarazione infile non dovreste aver bisogno di fare nulla se avete la delimitatore impostato correttamente.

infile foo DLM=',' ;

E sì, è possibile utilizzare effettivamente la funzione di compressione per rimuovere i caratteri specifici da una stringa di caratteri, sia in una fase di dati o come parte di una chiamata macro.

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

Dati di esempio:

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

problema Resolve in un passaggio di dati (piuttosto che creare una variabile macro):

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

problema Resolve mentre generando una variabile macro:

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

Dovrai ciclo attraverso le osservazioni al fine di visualizzare i valori compressi la variabile per ogni record se si utilizza il secondo codice. :)

Per comprimere più spazi vuoti in uno, utilizzare compbl: http: / /www.technion.ac.il/docs/sas/lgref/z0214211.htm

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top