apostrofi striscia da una stringa di caratteri (comprimere?)
-
23-08-2019 - |
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.
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 ¯ovar;
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