h1

Créer un data set à partir de données brutes (Line input)

septembre 25, 2008

Pour créer un data set SAS de but en blanc, il est possible de saisir des données manuellement ou de lire un fichier .TXT dans une étape DATA. Selon la structure des données 4 approches sont envisageables de manière distincte ou en combinaison. Lorsque chaque observation est séparée par des espaces, on parle de l’approche LINE INPUT. Cet article donne les rudiments de la syntaxe pour LINE INPUT.

1. Un premier exemple

Dans ce premier exemple, un data set nommé ONE est créé dans la bibliothèque WORK.

4 variables : Le data set ONE contient 4 variables, 3 numériques (NUM1-NUM3) et une texte (CHAR1). Les variables NUM1 et NUM apparaissent en premier. Elles sont suivies en troisième position de la variable CHAR1 et enfin de la variable NUM3. L’ordre d’affichage des variable est fonction de l’ordre dans lequel SAS rencontre la variable pour la première fois.

2 lignes d’observations : chacune des 4 variables contient deux observations.

Le symbole dollar : Dans ce premier exemple, on notera la présence d’un symbole dollar ($) après le nom de la variable texte CHAR1. Le symbole dollar permet donc de préciser que la variable qui le précède est une variable texte.

Datalines : Pour saisir les données dans l’étape data même, il faut commencer par ajouter une instruction DATALINES. Son ancien petit nom rencontré dans les documentations plus anciennes est CARD.

Important, le point-virgule : Il est important de noter qu’un point virgule terminant l’énumération des données se situe sur une ligne séparées des données.

data one;
input num1 num2 char1 $ num3;
datalines;
1 2 A 3
4 5 AA 6
;
run;

2. Ajouter des attributs

Dans ce second exemple, une variable texte (CHAR2) et une variable numérique (NUM4) sont ajoutées.

Préciser la longueur de la variable CHAR2 : Par défaut, les observations de plus de 8 caractères sont coupées. Ainsi United-Kingdom devient United-K.Lorsqu’une nouvelle variable texte est créée, il est important de préciser sa longueur.

A quel moment définir la longueur ? : Dans le cas présent, la longueur est à définir avant l’instruction INPUT. Sinon, SAS assignera une longueur de 8 par défaut et cette valeur ne pourra pas être changée. Cela veut dire que la variable CHAR2 sera la première variable rencontrée par SAS et qu’elle apparaîtra donc en premier dans le data set. Si vous voulez changer cet ordre, définissez explictement par exemple la longueur des autres variables. Pour plus de précisions pour changer  l’ordre d’affichage des variables, reportez-vous à l’article « Changer la séquence d’affichage des variables« .

Une instruction LENGTH : Pour définir une longueur de 20 octets représentant 20 caractères pour les données textes, l’instruction LENGTH est utilisée dans l’exemple. Comme il s’agit d’une variable caractère, il est important de le préciser en ajouter un symbole dollar avant le nombre 20.

data two;
length char2 $ 20;
input num1 num2 char1 $ char2 $ num3 num4;
informat num4 date9.;
format num4 date9.;
datalines;
1 2 A United-Kingdom 3 21MAR2009
4 5 AA France 6 31JAN2010
;
run;

Un informat pour interpréter les données à l’entrée dans un data set SAS : La variable NUM4 doit contenir des nombres représentant le nombre de jours écoulés depuis le 1er janvier 1960. Pour que SAS convertisse nos données, qui ont une structure de la forme JJMMMAAAA, on lui dit avec un INFORMAT.

La structure DATE9 : Dans notre cas, les 2 premier chiffres sont les jours, les 3 lettres qui suivent représentent les trois premières lettres du mois version anglaise et les 4 derniers chiffres sont l’année. Cette structure est appelée DATE9.

Un format pour interpréter les données d’un data set SAS : pour faciliter la lecture, il est possible d’afficher la date SAS (ce nombre « abstrait ») sous la structure DATE9. Pour cela, on applique un format à la variable NUM4. La valeur formatée apparaîtra par défaut dans un PROC PRINT.

3. Lire un fichier .TXT ou .DAT

Losque le nombre de données est important, il est préférable de stocker les données dans un fichier externe contenant des données brutes (.txt, .dat). Dans l’exemple qui suit, les données sont sauvegardées dans un fichier exemple_infile.txt.

L’instruction DATALINES n’est plus nécessaire à moins que vous souhaitiez ajouter des données à celles présentes dans le fichier externe.

Désigner le fichier dans un INFILE : L’instruction INFILE sert à désigner la source des données à lire. Dans cet exemple, le chemin complet d’accès au fichier est donné directement dans l’instruction INFILE entre guillemets.

data three;
infile ‘C:/sasref/exemple_infile.txt’;
length char2 $ 20;
input num1 num2 char1 $ char2 $ num3 num4;
informat num4 date9.;
format num4 date9.;
run;

Passer par un FILEREF : Il est aussi possible de donner un nom au chemin d’accès à ce fichier externe et de pointer ce fichier avec ce nom (FILEREF). Il faut alors ajouter une instruction FILENAME. En fin de programme, ce FILEREF est libéré pour une possible autre utilisation.

filename sasref ‘C:/sasref/exemple_infile.txt’;

data four;
infile sasref;
length char2 $ 20;
input num1 num2 char1 $ char2 $ num3 num4;
informat num4 date9.;
format num4 date9.;
run;

filename sasref clear;

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :