Le programme commence par créer trois tables de travail : `class`, `shoes`, et `cars`, en se basant sur les tables correspondantes de la bibliothèque SASHELP. La table `shoes` est filtrée pour ne garder que les régions 'Canada' et 'Pacific'. Ensuite, il ferme toutes les destinations ODS ouvertes et initie un nouveau document ODS nommé `doc_results`. Plusieurs rapports sont générés avec `PROC REPORT` sur les différentes tables, dont certains sont produits dynamiquement via une macro `%loopTroughMake` qui boucle sur les marques de voitures. Un graphique est également ajouté avec `PROC SGPLOT`. Enfin, le document ODS est fermé, consolidant toutes les sorties en un seul fichier.
Analyse des données
Type : SASHELP
Les données proviennent exclusivement de la bibliothèque SASHELP (tables class, shoes, cars).
1 Bloc de code
DATA STEP Data
Explication : Crée la table `class` dans la bibliothèque WORK en copiant `sashelp.class` et en ajoutant une colonne constante `const`.
Copié !
DATA class;
SET sashelp.class;
const = 1;
RUN;
1
DATA class;
2
SET sashelp.class;
3
const = 1;
4
RUN;
2 Bloc de code
PROC SORT
Explication : Trie la table `class` par les variables `const` et `sex`.
Copié !
PROC SORT DATA=class; BY const sex;RUN;
1
PROC SORTDATA=class; BY const sex;RUN;
3 Bloc de code
DATA STEP Data
Explication : Crée la table `shoes` en filtrant `sashelp.shoes` pour ne conserver que les régions 'Canada' et 'Pacific'.
Copié !
DATA shoes;
SET sashelp.shoes;
WHERE region in ('Canada', 'Pacific');
RUN;
1
DATA shoes;
2
SET sashelp.shoes;
3
WHERE region in ('Canada', 'Pacific');
4
RUN;
4 Bloc de code
PROC SORT
Explication : Trie la table `shoes` par `region` et `product`.
Copié !
PROC SORT DATA=shoes; BY region product; RUN;
1
PROC SORTDATA=shoes; BY region product; RUN;
5 Bloc de code
DATA STEP Data
Explication : Crée la table `cars` en copiant `sashelp.cars` et en ajoutant une colonne constante `const`.
Copié !
DATA cars;
SET sashelp.cars;
const = 1;
RUN;
1
DATA cars;
2
SET sashelp.cars;
3
const = 1;
4
RUN;
6 Bloc de code
ODS
Explication : Ferme toutes les destinations ODS actuellement ouvertes, puis ouvre une nouvelle destination `ODS DOCUMENT` nommée `doc_results` en mode écriture.
Explication : Génère un rapport tabulaire des ventes de chaussures (`shoes`) groupé par région (`region`). Le label ODS et le titre sont définis pour l'identifier dans la sortie.
Copié !
ODS PROCLABEL="Table 1: By Group Report about shoes";
TITLE "Table 1: By Group Report about shoes";
PROC REPORT DATA=shoes CONTENTS="";
BY region;
COLUMN region product sales;
DEFINE region / ORDER NOPRINT;
BREAK BEFORE region / CONTENTS="" page;
RUN;
1
ODS PROCLABEL="Table 1: By Group Report about shoes";
2
TITLE "Table 1: By Group Report about shoes";
3
PROC REPORTDATA=shoes CONTENTS="";
4
BY region;
5
COLUMN region product sales;
6
DEFINE region / ORDER NOPRINT;
7
BREAK BEFORE region / CONTENTS="" page;
8
RUN;
8 Bloc de code
PROC REPORT
Explication : Génère un rapport listant les élèves de la table `class`. Un saut de page est forcé avant le début du rapport.
Copié !
TITLE "Table 2: Table Class Output";
ODS PROCLABEL "Table 2: Table Class Output";
PROC REPORT DATA=class CONTENTS="";
COLUMN const name sex age height weight;
DEFINE const / ORDER NOPRINT;
BREAK BEFORE const / CONTENTS="" page;
RUN;
1
TITLE "Table 2: Table Class Output";
2
ODS PROCLABEL "Table 2: Table Class Output";
3
PROC REPORTDATA=class CONTENTS="";
4
COLUMN const name sex age height weight;
5
DEFINE const / ORDER NOPRINT;
6
BREAK BEFORE const / CONTENTS="" page;
7
RUN;
9 Bloc de code
Macro
Explication : Définit une macro `%loopTroughMake` qui génère un rapport `PROC REPORT` pour une marque de voiture (`make`) donnée. La macro accepte la marque et un numéro de table `i` en paramètres pour personnaliser le titre et le label ODS.
Copié !
%MACRO loopTroughMake(make,i);
TITLE "Table &i: Multiple outputs - Cars for make = &make";
ODS PROCLABEL "Table &i: Multiple outputs - Cars for make = &make";
PROC REPORT DATA=cars(WHERE=(make = "&make")) nowd headline spacing=2 CONTENTS="";
COLUMN const make model type msrp;
DEFINE const / ORDER NOPRINT;
BREAK BEFORE const / CONTENTS="" page;
RUN;
TITLE;
%MEND;
1
%MACRO loopTroughMake(make,i);
2
TITLE "Table &i: Multiple outputs - Cars for make = &make";
3
ODS PROCLABEL "Table &i: Multiple outputs - Cars for make = &make";
Explication : Génère un autre rapport sur la table `class`, similaire au deuxième rapport mais avec un titre et un label ODS différents.
Copié !
ODS PROCLABEL="Table 6: Different label";
TITLE "Table 6: Different title and label";
PROC REPORT DATA=class CONTENTS="";
COLUMN const name sex age height weight;
DEFINE const / ORDER NOPRINT;
BREAK BEFORE const / CONTENTS="" page;
RUN;
1
ODS PROCLABEL="Table 6: Different label";
2
TITLE "Table 6: Different title and label";
3
PROC REPORTDATA=class CONTENTS="";
4
COLUMN const name sex age height weight;
5
DEFINE const / ORDER NOPRINT;
6
BREAK BEFORE const / CONTENTS="" page;
7
RUN;
12 Bloc de code
PROC SGPLOT
Explication : Crée un graphique à barres verticales (`VBAR`) avec `PROC SGPLOT` montrant l'âge (`age`) groupé par sexe (`sex`) à partir de la table `sashelp.class`.
Copié !
ODS PROCLABEL="Figure 1: Class graphic";
PROC SGPLOT DATA = sashelp.class;
VBAR age / GROUP = sex;
TITLE 'Figure 1: Class overview by sex and age';
RUN;
1
ODS PROCLABEL="Figure 1: Class graphic";
2
PROC SGPLOTDATA = sashelp.class;
3
VBAR age / GROUP = sex;
4
TITLE 'Figure 1: Class overview by sex and age';
5
RUN;
13 Bloc de code
ODS
Explication : Ferme la destination `ODS DOCUMENT`, ce qui finalise et sauvegarde le document `doc_results` avec toutes les sorties générées.
Copié !
ODS DOCUMENT CLOSE;
1
ODS DOCUMENT CLOSE;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Project: SMILE - SAS Macros, Intuitive Library Extension, Author: Katja Glass, License: MIT
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.