Dans notre précédent article, nous avons vu comment créer un jeu de données en tapant nos valeurs directement dans le code avec l'instruction DATALINES. Soyons honnêtes : c'est très mignon quand on veut lister quatre fromages pour un tutoriel, mais dans la vraie vie, personne ne fait ça. Dans le monde impitoyable de la Data, les données vous arrivent sous la forme de fichiers Excel de 50 Mo envoyés par la comptabilité, d'extractions de bases de données obscures ou de fichiers texte séparés par des caractères improbables.
Essayer de lire ces fichiers à la main reviendrait à vouloir faire entrer un chat récalcitrant dans sa caisse de transport : c'est possible, mais vous risquez d'y laisser des plumes. Heureusement, SAS possède une arme secrète pour automatiser cette tâche : la procédure PROC IMPORT
Découvrons comment utiliser ce couteau suisse pour ingérer presque n'importe quel format de fichier !
1. Dompter les fichiers texte délimités (CSV, TXT)
Un fichier délimité est un fichier texte simple où chaque colonne est séparée par un caractère spécifique (une virgule, un point-virgule, une tabulation, etc.)
Imaginons que nous devons analyser les ventes d'une boulangerie. Le système de caisse nous a recraché un fichier texte ventes_matin.txt où les informations sont séparées par des points-virgules.
Voici comment aspirer ces données dans SAS :
SAS
2
3
4
5
6
7
8
9
10
11
12
13
14
PROC IMPORT
DATAFILE = "C:\Boulangerie\Donnees\ventes_matin.txt"
OUT = table_ventes_sas
DBMS = DLM
REPLACE;
DELIMITER = ';';
GETNAMES = YES;
RUN;
/* Vérification rapide des données importées */
PROC PRINT DATA = table_ventes_sas;
TITLE "Ventes de la matinée (Fichier Délimité)";
RUN;
Que se passe-t-il ici ?
DATAFILEindique à SAS où trouver le fichier sourceOUTdonne le nom de la table SAS qui sera créée (icitable_ventes_sas)DBMS = DLMprécise qu'il s'agit d'un fichier délimité (DeLiMited)REPLACEordonne à SAS d'écraser la tabletable_ventes_sassi elle existe déjà (très pratique quand on relance son code 20 fois de suite)DELIMITERdéfinit le fameux caractère séparateurGETNAMES = YESest magique : il lit la première ligne de votre fichier pour nommer automatiquement vos variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. SAS S'il y a des espaces dans vos noms de colonnes Excel, SAS les remplacera par des tirets du bas (_).
2. Aspirer la magie de Microsoft Excel
PROC IMPORT peut lire directement les données depuis la plupart des versions d'Excel Supposez que votre boulanger tienne son inventaire des stocks dans un fichier Excel, sur un onglet précis nommé Stocks_Viennoiseries.
SAS
2
3
4
5
6
7
8
9
10
11
12
PROC IMPORT
DATAFILE = "C:\Boulangerie\Donnees\inventaire.xls"
OUT = table_stocks
DBMS = EXCEL REPLACE;
SHEET = "Stocks_Viennoiseries";
GETNAMES = YES;
RUN;
PROC PRINT DATA = table_stocks;
TITLE "État des stocks de viennoiseries (Fichier Excel)";
RUN;
Les subtilités Excel :
DBMS = EXCELdit à SAS de traiter un tableur. (Note : Selon votre version de SAS, il est parfois nécessaire de préciser la version exacte d'Excel, par exempleDBMS = EXCEL97, bien que SAS soit généralement assez intelligent pour le deviner tout seul grâce à l'extension du fichier)- L'instruction
SHEETcible très exactement l'onglet à importer Si votre classeur n'a qu'un seul onglet, vous pouvez omettre cette ligne.
3. Extraire depuis une base de données (Microsoft Access)
Enfin, que faire si vos données RH (les horaires des pâtissiers) sont bloquées dans une base de données relationnelle comme Microsoft Access ? PROC IMPORT gère cela aussi avec brio La syntaxe change légèrement car on ne parle plus de "fichier de données" mais de "Table" et de "Base de données".
SAS
2
3
4
5
6
7
8
9
10
11
PROC IMPORT
TABLE = "Horaires_Employes"
OUT = table_planning
DBMS = ACCESS REPLACE;
DATABASE = "C:\Boulangerie\Donnees\rh_boulangerie.mdb";
RUN;
PROC PRINT DATA = table_planning;
TITLE "Planning de l'équipe (Base Access)";
RUN;
Le jargon Access :
- L'instruction
TABLEindique le nom de la table spécifique à l'intérieur de la base de données DBMS = ACCESSactive le moteur de lecture de bases de données- L'instruction
DATABASEremplace leDATAFILEpour fournir le chemin exact du fichier.mdb(ou.accdbselon les versions)
Le mot de la fin
Maîtriser PROC IMPORT vous fera gagner un temps précieux dans la phase de préparation de vos données. Une fois vos tables importées dans SAS, vous pourrez les triturer, les fusionner et les analyser à volonté.
Dans notre prochain article, nous aborderons un sujet qui donne souvent des sueurs froides aux développeurs débutants : la gestion des dates et des heures lors de l'importation de données ! (Car non, SAS ne lit pas naturellement "12/05/2024" sans qu'on lui explique comment faire).






