2009-04-03 10 views
1

J'ai une chaîne qui ressemble à ceci:Strip d'une chaîne apostrophes de caractères (compresser?)

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

Et je voudrais que ça ressemble à ceci:

ABAR_VAL ACQ_EXPTAX_Y ACQ_EXP_TAX ADJ_MATHRES2 

à savoir pas d'apostrophes ou de virgules et un seul espace séparé. Quelle est la manière la plus propre/la plus rapide de le faire dans SAS 9.1.3?

De préférence quelque chose le long des lignes de:

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

Pour être clair, le résultat doit être seul espace séparé, dépourvu de ponctuation, et contenue dans une variable macro.

Répondre

6

vous allez ici ..

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; 
2

Cela fait-il partie d'une instruction infile ou souhaitez-vous créer des variables de macro contenant ces valeurs? Si cela fait partie d'une instruction infile, vous ne devriez rien faire si vous avez correctement défini le délimiteur.

infile foo DLM=',' ; 

Et oui, vous pouvez en effet utiliser la fonction de compression pour supprimer des caractères spécifiques d'une chaîne de caractères, soit dans une étape de données ou dans le cadre d'un appel de macro.

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

données de l'échantillon:

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

problème de Resolve dans une étape de données (plutôt que de créer une variable macro):

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

problème de Resolve tout en générant une variable macro:

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

Vous aurez avoir à parcourir les observations afin de voir les valeurs compressées de la variable pour chaque enregistrement si vous utilisez ce dernier code. :)

+0

cette réponse ne produit pas de séparation de l'espace unique! Cependant, vous avez mis en évidence comment supprimer les marques de reconnaissance, ce qui était un point de mire, merci pour cela .. –