• Keine Ergebnisse gefunden

Chaque jeu de données sous SAS se présente sous la forme d’une table à deux dimensions dans laquelle les colonnes représentent les variables et les lignes les observations. Les colonnes sont identifiées par des noms de variables. Ces noms variable doit commencer par une chaîne de caractère. Deux possibilités se présentent à l’utilisateur lors de la lecture des données : la saisie directe ou la lecture à partir d’un fichier externe. Dans le premier cas, on utilise la commande INPUT et dans le second on peut utiliser soit la commande INFILE soit la procédure PROC (IMPORT, DBF, etc..). L’objet de cette section est de donner quelques détails sur les méthodes de lecture de données sous SAS.

I.1.1. Lecture des données par saisie directe I.1.1.1. Saisie

Lire les données par saisie directe c’est indiquer les valeurs des variables pour chaque ligne d’observation dans l'éditeur de programme. Cette saisie se fait avec l’instruction INPUT. Cette instruction est accompagnée par la clause DATALINES (ou CARDS) qui indique à SAS la fin de la déclaration de l'étape DATA et de début de la saisie sur la ligne suivante. Notez que les lignes de données ne se terminent pas par un virgule. Et la fin de la saisie ne termine pas non plus obligatoirement par un point-virgule. Le point-virgule à la fin de la saisie est simplement une habitude de bonne pratique. Mais il n’est pas nécessaire dans une étape INPUT.

L’exemple ci-dessous crée une table de données nommée MYDATA avec dix observations et sept variables. Les variables sont : ID, SEXE, AGE, REV, R1, R2 et R3 où REV désigne le revenu annuel en milliers, R1 à R3 sont des scores traduisant le degré d’appréciation de l’individu par rapport à trois produits particuliers.

DATA MYDATA;

INPUT ID SEXE $ AGE REV R1 R2 R3 ; DATALINES;

1 F 35 17 7 2 2 17 M 50 14 5 5 3 33 F 45 6 7 2 7 49 M 24 14 7 5 7 65 F 52 9 4 7 7 81 M 44 11 7 7 7 2 F 34 17 6 5 3 18 M 40 14 7 5 2 34 F 47 6 6 5 6 50 M 35 17 5 7 5

;

Pour afficher les données dans la fenêtre des résultats, on peut utiliser une PROC PRINT comme suit :

PROC PRINT DATA=MYDATA; RUN;

Au lieu de la déclaration DATALINES on peut également utiliser l'instruction CARDS.

Les deux sont équivalents.

Dans l’exemple ci-dessus, la déclaration de la variable SEXE variable dans l'instruction INPUT est suivie par un signe dollar ($) indiquant que celle-ci est une variable caractère. Sans instructions spécifiques, SAS suppose que toutes les variables sont numériques. Dans ce cas, si une valeur caractère est rencontrée pour un individu, alors SAS lui assigner une valeur manquante (.). Il est donc important de spécifier le type d’une variable lors de la saisie (numérique, caractère, date,…). Nous reviendrons sur la définition des types des variables un peu plus loin.

I.1.1.2. Définition de la longueur des champs lors de la saisie

Attention, lors de la saisie des données, car SAS considère que les valeurs des variables sont séparées par des espaces (blank). Mais il arrive qu’un enregistrement soit de longueur différente des autres enregistrements et qu’il existe un blank dans un enregistrement. Par exemple, en saisissant la ville New York, si aucune précaution n’est prise, SAS va séparer des deux mots en deux variables. Pour éviter une telle situation, on spécifie la longueur des variables (voir exemple ci-dessous).

DATA MYDATA;

INPUT NOM $1-20 AGE VILLE $29-37 ETAT $5-15 ; DATALINES;

Oliver Schabenberger 33 Lansing Michigan John T. Smith 37 New York New York Barack Hussein Obama 54 Honolulu Hawaï

; RUN;

$ 1-20 A la suite de la variable nom, indique que nom est une variable de caractères dont les entrées se trouvent dans les colonnes 1-20 des datalines. Etant donné que des blank délimitent automatiquement les variables dans datalines, le fait que les deux âges ne sont pas alignés n'a aucun effet. Ils seront lus correctement sans pointer SAS vers une colonne spécifique de la ligne de données. La ville est alors lue de nouveau en pointant SAS vers des colonnes spécifiques.

I.1.1.3. Indicateur de fin d’ enregistrement lors de la saisie : @@

Dans les exemples présentés ci-dessus, on constate que chaque enregistrement est situé sur une ligne spécifique. Cette manière d’écrire risque de prendre beaucoup d’espace lorsque le nombre d’observations est très élevé et que et le nombre de variables est très faible. Ainsi, il serait judicieux d’écrire plusieurs enregistrements sur une même ligne afin d’économiser de l’espace. Pour cela, on utilise l’identificateur d’enregistrement @@ dans la commande INPUT afin d’indiquer la fin d’un enregistrement et le début d’un autre (voir exemple ci-dessous).

DATA MYDATA;

INPUT ID SEXE $ AGE REV R1 R2 R3 @@ ; DATALINES /* ou CARDS */;

1 F 35 17 7 2 2 17 M 50 14 5 5 3 33 F 45 6 7 2 7 49 M 24 14 7 5 7 65 F 52 9 4 7 7 81 M 44 11 7 7 7 2 F 34 17 6 5 3 18 M 40 14 7 5 2 34 F 47 6 6 5 6 50 M 35 17 5 7 5

;

Avec cette spécification, SAS passe en revue par chaque ligne de données afin de remplir les variables ID SEXE AGE REV R1 R2 R3 à leur tour. Sans le symbole @@, SAS passe à la ligne suivante, dès que la dernière variable a été remplie. Avec le symbole

@@, SAS continue de remplir les variables jusqu'à ce qu'il atteigne la fin de la ligne.

I.1.2 . Lecture des données à partir d’un fichier externe

Pour lire les données à partir d’un fichier externe, on peut utiliser soit la commande INFILE ou la procédure PROC IMPORT ou PROC DBF.

I.1.2.1. Utilisation de la commande INFILE

La commande INFILE est utilisée lorsque les données sont déjà saisies dans un fichier externe et qu’il faut importer sous SAS afin de créer une table. La commande INFILE est généralement associée à deux autres commandes FILENAME et INPUT. La commande FILENAME indique le nom du fichier à importer et la commande INPUT indique les noms et les types des variables. La structure générale des étapes de lecture est la suivante :

FILENAME "Chemin +Nom de fichier données externe“ ; INFILE "Librairie. Nom table SAS“ ;

INPUT "Liste des variables et leur type " ; RUN ;

Les exemples ci-dessous illustrent l’utilisation de la commande INFILE.

I.1.2.2. Lecture d’un fichi er de données avec séparateur simple (blank)

L’exemple ci-dessous importe les données à partir d’un fichier simple fichier texte dont les séparateurs sont des espaces (blank).

FILENAME MYFOLDER 'C:\données.txt';

DATA MYDATA;

INFILE MYFOLDER;

INPUT ID SEXE $ AGE REV R1 R2 R3;

RUN;

La ligne de commande FILENAME attribue un nom simple au fichier de données externe. Attention, le nom attribué ne doit pas être supérieur à 8 caractères. Ici le fichier de données est nommé MYFOLDER. Ensuite, on appelle ce fichier avec la commande INFILE. Les variables et leur type sont spécifiés dans la commande INPUT.

Notons aussi que la commande INFILE n’est pas nécessaire lors de la lecture des données. Elle sert juste à raccourcir le nom du fichier de données. Par exemple, on

DATA MYDATA;

INFILE 'C:\données.txt';

INPUT ID SEXE $ AGE REV R1 R2 R3;

RUN;

I.1.2.3. Lecture d’un fichier de données avec autre séparateur

Très souvent, les enregistrements dans les fichiers de données externes sont séparées par des symboles spécifiques : virgules, point-virgule, tabulation, etc…). Dans chacun de ces cas, en utilisant la commande INFILE, il faut absolument indiquer le type de séparateur.