Supprimer les caractères spéciaux d'une table. La fonction COMPRESS

SAS BASE 5 nov. 2019

La fonction COMPRESS peut se montrer très utile et performante pour supprimer des "types" de caractères.

Syntaxe:

COMPRESS(source<, characters><, modifier(s)>)

  • Source : Variable à modifier
  • Characters : Liste des caractères sur lesquels la fonction a un impact (mettre "" permet d'impacter toute la variable)
  • Modifier(s) : Un ou plusieurs modifier(s) à utiliser pour appliquer la fonction

Supprimer des espaces

Son utilisation de base permet de supprimer les "blank" dans vos variables alphanumériques.

data _null_;
var=' Chaine de caracteres!!. 54' ;
var_compressed = compress(var,'');
put var_compressed=; 
/* --> var_compressed=Chainedecaracteres!!.54 */
run; 

En soit cette manipulation peut être faite par d'autres fonctions comme:

  • STRIP() qui supprimer les leading et trailing blanks
  • COMPBL() qui supprimer les doubles espaces

Pour supprimer d'autres "types" de caractères

Pour cibler des types de caractères il faut utiliser les modifiers de la fonction.

Voici la liste des modifiers que j'utilise le plus:

Modifiers Définition Exemple Résultat
a Compress les lettres en majuscule & minuscule compress(var,"","a"); !!.54
ak Compress les chiffres et les caractères spéciaux compress(var,"","ak"); Chaine de caracteres
kd Compress tout sauf les numéros compress(var,"","kd"); 54
d Compress les numéros + espaces compress(var,"","d"); Chainedecaracteres!!.
i Compress une liste de caractères peut importe la casse compress(var,"ac","i"); hine de rteres!!. 54
k Compress tout sauf les caractères spécifiés compress(var,"ac","k"); acaac
l Compress les lettres en minuscule + espaces compress(var,"","l"); C!!.54
u Compress les lettres en majuscule + espaces compress(var,"","u"); hainedecaracteres!!.54
s Compress les espaces compress(var,"","s"); Chainedecaracteres!!.54
p Compress la ponctuation + espaces compress(var,"","p"); Chainedecaracteres54
Vous pouvez combiner plusieurs modifiers dans une seule fonction COMPRESS
data _null_;
var=' Chaine de caracteres!!. 54' ;
var_compressed = compress(var,'','ak kd');
put var_compressed=; 
/* --> var_compressed=Chaine de caracteres 54 */
run; 

Pour certain usages vous pouvez aussi utiliser la fonction TRANWRD() qui permet de remplacer une chaîne par une autre.

Documentation:

COMPRESS Function

Super ! Vous vous êtes inscrit avec succès.
Super ! Effectuez le paiement pour obtenir l'accès complet.
Bon retour parmi nous ! Vous vous êtes connecté avec succès.
Parfait ! Votre compte est entièrement activé, vous avez désormais accès à tout le contenu.