PROC IML : L'astuce matricielle pour auditer instantanément la structure de vos Datasets

Niveau de difficulté
Débutant
Publié le :
Simon

Le Conseil de l'Expert

Simon
Expert SAS et fondateur.

L'innovation majeure de ce code réside dans l'utilisation de la fonction TableCreateFromDataSet. Contrairement aux matrices SAS/IML classiques qui n'acceptent qu'un seul type de données (tout numérique ou tout caractère), cette fonction crée un objet hybride comparable aux DataFrames de R ou Pandas, permettant de manipuler simultanément des variables mixtes au sein d'une même structure en mémoire.

Le programme initialise une table IML à partir du jeu de données de démonstration SASHELP.CARS. Il procède ensuite à l'extraction des noms de toutes les variables, de leurs types (caractère ou numérique) et détermine pour chaque variable si elle est de type numérique. L'ensemble de ces informations est ensuite affiché dans la fenêtre de sortie, présenté sous forme de tableau avec les noms de variables en colonnes et les types/statut numérique en lignes.
Analyse des données

Type : SASHELP


Le script utilise le jeu de données 'Cars' de la bibliothèque standard 'SASHELP', qui est un jeu de données de démonstration inclus par défaut dans l'environnement SAS.

1 Bloc de code
PROC IML
Explication :
Ce bloc de code IML initialise une table en mémoire à partir du jeu de données SASHELP.CARS. Il utilise ensuite des fonctions IML spécifiques (TableGetVarName, TableGetVarType, TableIsVarNumeric) pour recueillir des métadonnées sur les variables de cette table. Enfin, il imprime ces informations (type de variable et indicateur numérique) de manière structurée dans la sortie SAS, avec les noms de variables comme en-têtes de colonne.
Copié !
1PROC IML;
2tClass = TableCreateFromDataSet("Sashelp", "Cars");
3colnames = TableGetVarName(tClass);
4type = TableGetVarType(tClass);
5isNum = TableIsVarNumeric(tClass);
6PRINT (type // char(isNum))[c = colnames r={"Type" "IsNum"}];
7RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.