SAS intermédiaire
Objectifs pédagogiques
- Acquérir les techniques avancées permettant d’effectuer les traitements plus rapidement et plus efficacement
- Se familiariser avec les principaux éléments du langage SQL implémenté dans SAS
Programme détaillé
La formation détaillera la gestion des tables (observations et variables) grâce à l’étape DATA et la procédure SQL. Sera également présenté l’Output Delivery System (ODS) et ses utilisations. Les stagiaires mettront en œuvre le logiciel, sous la forme d’exercices d’application
Les traitements conditionnels, les boucles 5h
- Utilisation de SELECT, WHERE
- Présentation de traitements avancés utilisant IF
- Utilisation de DO, DO WHILE, DO UNTIL
Gestion avancée des tables 1h
- Gestion de tables SAS : tri, concaténation, fusion avancée
La procédure SQL 4h
- Utilisation du langage SQL implémenté dans SAS
Gestion des doublons 1h
- En SAS classique et en SQL
Utilisation de l’ODS 1h
- Utilisation de l’ODS via deux exemples : les ODS PDF et OUTPUT
- Présentation d’autres sorties ODS dont l’ODS vers Excel
Public visé
Toute personne souhaitant se perfectionner en SAS : statisticiens, chargés d’études statistiques, data analysts…
Prérequis
Parmi nos formations au logiciel SAS, cette formation est le niveau 2. Elle requiert une connaissance de base du logiciel SAS (maîtrise du contenu de la formation niveau 1 - SAS initiation).
Un débutant ou un ancien utilisateur ayant peu de pratique s’orientera donc vers la formation SAS initiation. Si au contraire vous êtes déjà un utilisateur avancé de SAS, vous serez peut-être intéressé(e) par la formation SAS expert.
Approche pédagogique
Calculés à partir de 84 avis recueillis depuis 13/05/2016, lors de 12 sessions de cette formation.
Étape DATA ou PROC SQL ? Fusions et doublons, là où les deux divergent
Une fois les bases acquises, presque toutes les manipulations de tables peuvent s’écrire de deux façons en SAS : avec une étape DATA ou avec la procédure SQL. Le choix n’est pas qu’une affaire de goût, car sur deux opérations courantes, la fusion de tables et la suppression des doublons, les deux approches ne donnent pas toujours le même résultat.
Deux logiques de traitement
L’étape DATA lit les tables séquentiellement, observation par observation, ce qui permet des traitements fins : variables qui se cumulent d’une ligne à l’autre (RETAIN), repérage de la première ou de la dernière ligne d’un groupe (FIRST. et LAST.), boucles DO. PROC SQL raisonne sur des ensembles : on décrit le résultat voulu (SELECT ... FROM ... WHERE ... GROUP BY) et SAS choisit comment l’obtenir. Agrégations, jointures sur des clés de noms différents et sous-requêtes s’y écrivent plus directement.
La fusion : MERGE n’est pas une jointure SQL
MERGE impose que les tables soient triées (ou indexées) selon la variable de l’instruction BY, là où PROC SQL n’exige aucun tri préalable. La différence la plus importante apparaît lorsqu’une même valeur de clé se répète dans les deux tables, la situation dite « plusieurs à plusieurs ». PROC SQL produit alors toutes les combinaisons possibles (produit cartésien). L’étape DATA, elle, apparie les lignes une à une dans l’ordre, et se contente d’une note dans le journal : MERGE statement has more than one data set with repeats of BY values. Le programme ne s’arrête pas, mais le résultat est rarement celui attendu. Lire cette note fait partie des réflexes à acquérir.
proc sql;
create table commandes_clients as
select c.id_client, c.region, o.montant
from clients as c left join commandes as o
on c.id_client = o.id_client;
quit;
Les doublons : savoir ce que l’on compare
Avec PROC SORT, l’option NODUPKEY supprime les observations dont les variables de l’instruction BY sont identiques, sans regarder les autres colonnes. L’option NODUPRECS vise les lignes entièrement identiques, mais elle ne compare que des observations adjacentes après le tri : deux lignes identiques séparées par une autre peuvent subsister. Pour supprimer les doublons exacts, on trie donc sur toutes les variables (BY _ALL_). L’option DUPOUT= conserve les lignes écartées dans une table à part, pour vérifier ce qui a été supprimé.
proc sort data=clients out=clients_uniques nodupkey dupout=clients_doublons;
by id_client;
run;
En SQL, SELECT DISTINCT ne garde que des lignes entièrement distinctes parmi les colonnes sélectionnées. Pour aller plus loin dans l’automatisation des traitements, voir la formation SAS expert, consacrée au macro-langage.