Publié le :
Action CREATION_INTERNE

Instruction OUTPUT

Ce code est également disponible en : Deutsch English Español
En attente de validation
L'instruction OUTPUT indique à SAS© d'écrire l'observation courante dans un ensemble de données SAS© immédiatement, et non à la fin de l'étape DATA. Si aucun nom d'ensemble de données n'est spécifié dans l'instruction OUTPUT, l'observation est écrite dans le ou les ensembles de données listés dans l'instruction DATA.
Par défaut, chaque étape DATA contient une instruction OUTPUT implicite à la fin de chaque itération qui indique à SAS© d'écrire des observations dans le ou les ensembles de données en cours de création. L'inclusion d'une instruction OUTPUT explicite dans une étape DATA annule la sortie automatique, et SAS© n'ajoute une observation à un ensemble de données que lorsqu'une instruction OUTPUT explicite est exécutée. Cependant, une fois que vous utilisez une instruction OUTPUT pour écrire une observation dans un ensemble de données, il n'y a plus d'instruction OUTPUT implicite à la fin de l'étape DATA. Dans cette situation, une étape DATA écrit une observation dans un ensemble de données uniquement lorsqu'une instruction OUTPUT explicite est exécutée. Vous pouvez utiliser l'instruction OUTPUT seule ou dans le cadre d'une instruction IF-THEN, SELECT ou d'un traitement de boucle DO.
Lorsque vous utilisez l'instruction MODIFY avec l'instruction OUTPUT, les instructions REMOVE et REPLACE annulent l'action d'écriture implicite à la fin de chaque itération de l'étape DATA. Si les deux instructions OUTPUT et REPLACE ou REMOVE s'exécutent sur une observation donnée, effectuez l'action de sortie en dernier pour maintenir la position correcte du pointeur d'observation.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou SASHELP.

1 Bloc de code
DATA STEP
Explication :
Ces extraits de code montrent des utilisations simples de l'instruction OUTPUT. La première ligne écrit l'observation courante. La deuxième écrit l'observation si 'deptcode' est supérieur à 2000. La troisième écrit l'observation dans l'ensemble de données 'markup' si la variable 'phone' est manquante.
Copié !
1/* Écrit l'observation courante dans un ensemble de données SAS spécifié dans l'instruction DATA */
2OUTPUT;
3 
4/* Écrit l'observation courante dans un ensemble de données SAS lorsqu'une condition spécifiée est vraie */
5IF deptcode gt 2000 THEN OUTPUT;
6 
7/* Écrit une observation dans l'ensemble de données MARKUP lorsque la valeur de PHONE est manquante */
8IF phone=. THEN OUTPUT markup;
2 Bloc de code
DATA STEP Data
Explication :
Cet exemple crée trois observations dans l'ensemble de données 'response' pour chaque observation de l'ensemble de données 'sulfa'. L'ensemble de données 'sulfa' est d'abord créé avec des données en ligne (datalines). Ensuite, l'étape DATA 'response' lit chaque observation de 'sulfa' et utilise l'instruction OUTPUT trois fois pour créer trois nouvelles observations, chacune avec une valeur 'time' différente provenant des variables 'time1', 'time2' et 'time3'.
Copié !
1DATA sulfa;
2 INPUT patient $ time1 time2 time3;
3 DATALINES;
4pat1 10 20 30
5pat2 15 25 35
6;
7RUN;
8 
9DATA response(drop=time1-time3);
10 SET sulfa;
11 time=time1;
12 OUTPUT;
13 time=time2;
14 OUTPUT;
15 time=time3;
16 OUTPUT;
17RUN;
3 Bloc de code
DATA STEP Data
Explication :
Cet exemple montre comment créer plusieurs ensembles de données SAS ('ozone' et 'oxides') à partir d'un seul fichier d'entrée. Un fichier d'entrée temporaire 'input_data.txt' est d'abord créé. L'étape DATA lit ensuite les données de ce fichier. Si la substance chimique est 'O3', l'observation est écrite dans l'ensemble de données 'ozone'; sinon, elle est écrite dans l'ensemble de données 'oxides'.
Copié !
1DATA _null_;
2 file 'input_data.txt';
3 put 'London 01JAN2025 O3 25';
4 put 'Paris 01JAN2025 NOx 15';
5 put 'Berlin 01JAN2025 O3 30';
6 put 'Rome 01JAN2025 SO2 10';
7RUN;
8 
9DATA ozone oxides;
10 INFILE 'input_data.txt';
11 INPUT city $ 1-15 date date9.
12 chemical $ 26-27 ppm 29-30;
13 IF chemical='O3' THEN OUTPUT ozone;
14 ELSE OUTPUT oxides;
15RUN;
4 Bloc de code
DATA STEP Data
Explication :
Cet exemple combine plusieurs observations d'entrée en une seule. L'ensemble de données 'gadgets' est créé avec des valeurs de défauts. L'étape DATA 'discards' lit ces observations, cumule la variable 'defects' dans 'total' et écrit une seule observation dans 'discards' après avoir traité 10 observations, puis arrête le traitement.
Copié !
1DATA gadgets;
2 INPUT defects;
3 DATALINES;
41
52
63
74
85
96
107
118
129
1310
1411
1512
16;
17RUN;
18 
19DATA discards;
20 SET gadgets;
21 drop defects;
22 reps+1;
23 IF reps=1 THEN total=0;
24 total+defects;
25 IF reps=10 THEN DO;
26 OUTPUT;
27 stop;
28 END;
29RUN;
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 : Copyright © SAS Institute Inc. All Rights Reserved


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Soyez vigilant : l'oubli d'un OUTPUT dans une structure conditionnelle complexe est la cause numéro 1 des tables de sortie "étonnamment vides". Si vous utilisez OUTPUT, assurez-vous que chaque chemin logique de votre code (chaque IF, chaque ELSE) contient bien l'instruction nécessaire pour ne perdre aucune donnée en route. »