Title | Note Informatique SAS - Notes de cours Cours SAS |
---|---|
Course | Informatique de gestion |
Institution | Université de Versailles Saint-Quentin-en-Yvelines |
Pages | 23 |
File Size | 1.6 MB |
File Type | |
Total Downloads | 102 |
Total Views | 134 |
Logiciel SAS / Codage
Mr Hervé NSEKE EBELE...
Note Informatique (SAS) http://192.168.206.128 Pour créer un dossier : clic droit là où on veut créer le dossier => nouveau => dossier
On télécharge le dossier créer sur notre ordinateur : on se fait sur « Ficin » clic droit => télécharger les fichiers… => et là on va chercher le dossier sur l’ordinateur :
Quand on ouvre un nouveau dossier sur SAS, on aura toujours la structure suivante :
Code : où on écrit le programme Journal : compte rendu d’exécution. Plus communément on appelle cela LOG Résultats : output
Pour créer une nouvelle feuille on fait F4 :
Instruction sous SAS : 1
Il ne faut surtout pas oublier le point-virgule à la fin des formules, c’est le point de repère pour SAS !
LIBNAME : nom du répertoire, libref qui est un nom de raccourcie que l’on choisit et il va pointer vers un répertoire. Libref = « Chemin complet du répertoire » ; Exemple : on crée un raccourcie « Folders/myFolders/ac/bases », et je l’appelle base ici :
Pour vérifier si cela est bon on appuie sur F3 pour exécuter et qu’il dise ce qu’il a compris.
Cela ne fonctionne pas car l’adresse entre guillemets n’est pas la bonne. Donc là on va sur base est on fait clic doit => propriété et on a l’adresse exact à mettre entre guillemets : et si on refait on obtient :
2
Et là cela fonctionne. FILENAME [le nom du fichier] « /chemincomplet/nomfichier.extension » ; On va donc tester cette formule qui consiste à faire un lien vers le fichier envoyé par mail :
Pour voir le fichier on peut aller dans « raccourcis de fichiers » et on double clic sur le fichier :
/* commentaire */ c’est l’écriture pour faire des commentaires et SAS nous le remettra tel quel comme cela.
Pour travailler sous SAS, seulement deux méthodes :
Etape DATA
Ou Procédure
3
Etape DATA : cela permet de créer la base SAS, la syntaxe de façon générique c’est : DATA libref.nom table SAS à créer ; Ici libref va indiquer le lieu de stockage, soit qui fait référence à un chemin qu’on a créé au préalable. Le nom de la table SAS commence forcément par une lettre ou un caractère souligné. Il existe 4 façons de créer une table SAS :
A partir de rien, on peut créer la table, avec l’instruction CARDS : DATA libref.nom de la table SAS à créer Ensuite on créer la structure de la table : INPUT NomVariable1 Type Variable1… Nom Variable n Type Variable n Type de variable peut être numérique ou alphanumérique. Si on veut de l’alphanumérique il faudra mettre le $, si on ne met rien cela signifie que la variable sera exclusivement numérique. Ensuite on remplit la base de données, on indique par ligne les valeurs que l’on souhaite attribuer : CARDS ; ____ ____ … ____ ; On doit positionner ensuite un ; en début de ligne suivante. Puis on finit par : RUN ; Exemple : DATA A ; INPUT NOM $ AGE ; CARDS; Alice 26 Marc 19 Julie 20 ; RUN;
Si on ne précise pas d’où la base provient alors on créera une base temporaire, on peut aussi écrire work pour le temporaire.
Autre façon de créer une table avec la méthode OUTPUT :
4
DATA libref.Nom table SAS à créer LENGTH pour définir la longueur maximum des variable sinon cela ne marchera pas Nom variable 1 = valeur 11 ; … ; Nom variableP1= valeur P1 ; OUTPUT ; …. Nom variable 1=valeur 1n ; … ; Nom variable P=valeur Pn ; OUTPUT ; RUN ; Exemple : DATA A ; LENGTH NOM $10 AGE 4; Nom= « Alice » ; AGE=26 ;OUTPUT ; Nom= “Marc”; AGE=19; OUTPUT; Nom= “Julie”; AGE=20; OUTPUT; RUN;
A partir d’une table SAS exigeante: DATA libref1.nom table SAS à créer ; SET libref2.nom table SAS; RUN;
Questions: 1. Créer une table SAS temporaire, nommée FISH1, à partir de la table SAS, FISH, stockée dans la bibliothèque SASHELP. 2. Créer une table SAS temporaire, nommée FISH2, stockée dans ac/bases, stockée dans FISH1 3. Créer une table SAS temporaire, nommée FISH3, stockée dans ac/tmp, stockée dans FISH2 Application :
A partir d’un fichier externe : IMPORTATION
5
Filename filref « chemin complet du dossier/nom du fichier/extention » ; => (pour aller chercher le fichier) DATA libref.Nom de la table SAS à créer ; INFILE Fileref ; Input NomVariable1 Type Variable 1 … Nomvariablen TypevariableP ; RUN; Rappel: si on a juste du numérique type = rien de special, s’il est alpha numérique on met “$”.
Il existe 4 procédures, qui répondent à un besoin très précis : Une étape PROC est construite par le mot clef PROC suivi du nom de la procédure . L'instruction PROC se termine par un point-virgule. PROC nom de procédure options DATA=nom de table (options);paramètres ;RUN ;
La procédure CONTENTS : elle permet de lister les caractéristiques d'une tables SAS (ou de l'ensemble d'une "librairie"). Proc contents DATA=nom de table; Proc contents DATA=libref._all_; RUN;
En cliquant sur le bonhomme qui court en haut à gauche, on obtient alors:
6
La procédure FORMAT permet de construire ses propres formats d'impression. Le format peut aussi être utilisé en lecture et en écriture. Il permet des recodifications avec la fonction PUT. Proc format [library=nomlib] [fmtlib]; value nom 'valeur1' = 'label1' 'valeur2'='label2' .....; => Value typedeformat Nomduformat ; Valeurinitale = valeur 1 nouvelle … Valeur initiale = valeur p finale ; RUN ;
Utiliser le '$' pour définir un format alphanumérique. On a par exemple H pour Homme et F pour femme :
7
La procédure SORT permet de trier une table SAS sur une ou plusieurs variables, par contre on ne garde pas la table initiale : PROC SORT data=libref.nom table SAS à trier ; BY nom variable1… nom variable p ; RUN ; Autre façon de faire pour garder la table initial tel quelle et trier la nouvelle base :
PROC SORT data=libref.nom table SAS à trier OUT=libref.nom2 ; BY nom variable1… nom variable p ; RUN ;
La procédure PRINT permet d'imprimer une table SAS. Proc print DATA= libref.Nom table SAS ; ID nom de la 1ère variable; VAR nom variable 1 nom variable 2…; SUM nom variable 1 nom variable 2… ; BY liste des variables; PAGEBY BY-variable; RUN;
Remarque pour utiliser BY il faut d’abord avoir trié la base de donner pour pouvoir l’utiliser. Pour changer de page, à chaque modalité (exemple : une page avec tous les hommes puis une page avec tous les hommes), on utilise PAGEBY, qui a la même obligation que BY pour l’utiliser la table doit d’abord être trié.
8
Exercice fichier document :
TD1_SAS_2016_2017,
questions
à
la
fin
du
1. Créer une table SAS à partir du fichier externe ‘TD1.TXT’. On télécharge le fichier TD1 sur SAS, puis :
On décide d’appeler le dossier téléchargé : « fichier ». On nomme la table « AVION ». On a rajouté DIM= « 09 »x, car DLM correspond à un délimiteur et dans notre fichier il y a un espace entre chaque variable, pour que SAS s’y retrouve au moment où il récupère les données, on écrit DLM = « 09 »x. 09 correspond à la tabulation, si c’était des pointsvirgules, le code serait : DLM= « ; ».
2. Afficher la table créée à l’aide de la procédure PRINT.
3. Supprimer le décompte des observations. La variable VOL remplacera la variable. OBS. Ne conserver à l’affichage que les variables VOL, DEST, RESERVE et REVENU.
9
4. Restreindre l’affichage aux vols n°271. On est revenu sur la 4 après avoir été jusqu’à la question 7. Il existe 2 façons différentes de faire : Méthode 1 : en décomposant DATA Filtre ; SET AVION ; WHERE VOL=”271”; RUN ; PROC PRINT DATA=Filtre; RUN; Méthode 2: en une seule étape: PROC PRINT DATA=AVION ; WHERE VOL= « 271 » ; RUN;
5. Affichage du total pour les variables RESERVE et REVENU.
10
6. Affichage des sous-totaux de passagers et de revenu pour chaque vol.
D’abord on trie la base puis on fait la somme.
7. Même question que précédemment avec un sous-total par page.
11
8. Ajouter le titre suivant : ’ Aéroport International’ ‘Vols à destination de Londres et Paris’ Ajouter la note de bas de page : ‘Division Infocentre’.
12
Footnote => note de bas de page Cela donne :
9. Ajouter les intitulés suivants pour chaque variable : VOL DATE DEST RESERVE
Numéro de vol Date du vol Destination Nombre
REVENU
passagers Total des revenus
de
13
Cela donne :
10.Créer les formats suivants : PAR Paris Londres LON
14
271 Airbus 821 Boeing Associer les formats créés respectivement aux variables DEST et VOL. Associer le format commax6. à la variable RESERVE et dollarx10. à la variable REVENU.
Attention, il y a bien un point après « $DEST » et « $COMP ».
15
On obtient alors :
Pour rajouter une nouvelle variable dans la base de données : DATA libref.NomtableSAS ; Nom vartiable= Fonction(paramètre) ; RUN ;
Quelques fonctions :
CALCUL : o
Somme : SUM(Variable1, variable2, …, variable p) ;
o
Moyenne MEAN (Variable1, variable2, …, variable p) ;
o
Ecart type : STD (Variable1, variable2, …, variable p) ;
Pour générer une variable aléatoire : o
Loi statistique uniforme : UNIFORM(paramètre d’initialisation => celui qu’on veut c’est juste pour lancer le processus) ;
o
Varibale normale : NORMAL (paramètre d’initialisation => celui qu’on veut c’est juste pour lancer le processus) ;
16
DATE : la date référence pour SAS c’est le 1/01/1960 : o
Pour récupérer le mois : MONTH(date SAS)
o
Pour récupérer l’année : YEAR (date SAS)
o
Pour récupérer un intervalle de temps : INTCK (« Unité temporelle », date SAS initiale, date SAS finale) ; Unité temporelle ça peut-être en année « YEAR »
o
Pour récupérer la date du jour au format SAS : TODAY () ; DATE ()
o
Nous renvoyer une date au format SAS : MDY (mois, jour, année)
Exercice :
Créer table SAS temporaire
VAR1= date du jour VAR2= 31/03/2010 VAR3=intervalle entre les 2 dates en année
Et cela affiche :
Les résultats correspondent au nombre de jours cela n’affiche pas la date exacte.
17
Dernière catégorie de fonction, liée au texte :
Extraire une chaine de caractère : SUBSTR(Nom de variable, position d’extraction, longueur d’extraction) ; A savoir que le paramètre « longueur d’extraction » est facultative, si on le met pas, il va prendre jusqu’à la fin.
Extraire une sous chaîne de caractère dans une chaine de caractère : SCAN(Nom de variable, position d’extraction, délimiteur) ; Exemple ABC DEFGH IJ et on veut toujours récupérer le deuxième élément soit ici DEFGH : SCAN(« ABC DEFGH IJ », 2, « ») ;
Pour connaitre la longueur d’une chaine de caractères : LENGTH(Nom de la variable)
Répondre à une problématique de recherche : INDEX (Nom de la variable, « Caractère recherché ») ; Elle renvoi oui et la première position où elle l’a trouvée, et le nombre sera strictement positif, sinon c’est qu’elle l’a pas retrouvé et elle renvoi à 0.
Mettre en majuscule ou en minuscule : UPCASE (Nom variable) ; LOWCASE (Nom varibale) ;
Pour mettre à gauche ou à droite : LEFT(Nom variable) ; RIGHT (Nom variable) ;
Supprimer des espaces inutiles, notamment en fin de chaînes de caractères : TRIM (Nom variable) ;
Pour concaténer : !!; Exemple : VAR4=VAR1!!VAR2 ;
Commodité d’écriture, plutôt que d’écrire : SUM(VAR1, VAR2, …, VAR10) ; On peut écrire directement : =SUM(OF VAR1-VAR10) ; FILTRE : Pour conditionner le nombre d’individu présent dans notre base finale :
IF logique ou Filtre implicite : Si on veut garder que les femmes dans une table : DATA FEMMES ; SET TOUS ;
18
IF SEX=2 ; RUN ; Et le filtre implicite, c’est : DATA nom table SAS à créer ; La partie création … ; IF condition ; RUN ; Cela sous-entend que si ma condition est vraiment et seulement si elle est vrai je l’afficherai dans ma base de données.
IF comme instruction de contrôle : DATA nom d’une table SAS à créer ; La partie création… ; IF condition THEN traitement ; ELSE traitement ; RUN ;
On a aussi : DATA nom de table SAS ; IF condition THEN DO ; Traitement 1 ; Traitement 2; …; END; ELSE DO; Traitement 1; Traitement 2; … END; RUN;
Fichier: “TD2_2016_2017: Exercice 1: Le point correspond à une valeur manquante pour SAS
19
Pour arrondir un résultat il existe la fonction : ROUND (Les variables, Le degré d’arrondie)
Si on nous demande d’imprimer, il faut rajouter :
1ère méthode pour « anniversaire dans le mois en cours :
2ème méthode :
20
Question « Créer un état affichant la liste des salariés fêtant leurs dix ans d'ancienneté dans le mois en cours » :
Question « Créer une table contenant une observation par salarié avec une date de visite médicale que vous aurez générée aléatoirement au niveau du jour (xx032017). Vous utiliserez une distribution uniforme » : CEIL c’est pour avoir une partie entière qui est au moins 1
Attention il y a bien un point après le format ! Exercice 2 :
Créer une variable contenant les initiales des individus : DATA LISTE ; SET LISTE ; INIT=SUBSTR(SCAN(NOM, 2, « , »), 1, 1) !! « . » !!SUBSTR(NOM, 1, 1) !! « . » ; RUN ;
21
Afficher les individus dont Comment
peut-on
procéder
la fonction est analyste programmeur (AP). pour
que
l'individu
Farr
LUC
apparaisse
également ? PROC PRINT DATA=LISTE ; WHERE INDEX(FONCTION, « AP ») ; RUN ; On peut mettre ensuite en majuscule : PROC PRINT DATA=LISTE ; WHERE INDEX(UPCASE(FONCTION), « AP »)>0 ; RUN ; On peut aussi faire, si on veut mettre en minuscule : PROC PRINT DATA=LISTE ; WHERE INDEX(LOWCASE(FONCTION), « ap »)>0 ; RUN ; Le « >0 » c’est pour que ce soit positif. Exercice 3 : DATA USER; LENGTH name $20; INPUT name $1-20; CARDS; James R. Harrison Mary Richardson T. Masters Richard J. Thomas ; RUN;
Ce qu’on veut va ressembler à : USERID STUJRH
22
STUM? R STUT?M STURJT DATA USER ; LENGHT INIT1-INIT3 $1 ; RETAIN ALPHA « ABCDEFGHIJKLMNOPQRSTUVWXYZ » ; SET USER ; INIT1= SUBSTR(SCAN(NAME, 1, « »),1,1) ; INIT2= SUBSTR(SCAN(NAME, 2, « »),1,1) ; INIT3= SUBSTR(SCAN(NAME, 3, « »),1,1) ; IF INIT3= « » THEN DO ; INIT3=INIT2 ; INIT2= SUBSTR(ALPHA, CEIL(UNIFORM(0)*26),1) ; END ; USERID= « STU » !!INIT1 !!INIT2 !!INIT3 ; RUN ; CEIL garde uniquement la partie entière d’un nombre
23...