Toutes les tables sont créées dynamiquement à l'aide de boucles et d'assignations de variables au sein des étapes DATA.
1 Bloc de code
DATA STEP Data
Explication : Création d'une table 'simple1' avec une boucle simple de 1 à 4. Sans instruction OUTPUT explicite à l'intérieur de la boucle, l'écriture dans la table se fait implicitement à la fin de l'étape DATA (une seule observation finale contenant la dernière valeur de i et answer).
Copié !
/*
Demonstration: Simple Illustration of How DO Loops Work
*/
data simple1;
do i = 1 to 4;
answer = 1 + i;
end;
run;
proc print data=simple1 noobs;
run;
1
/*
2
Demonstration: Simple Illustration of How DO Loops Work
3
*/
4
DATA simple1;
5
DO i = 1 to 4;
6
answer = 1 + i;
7
END;
8
RUN;
9
10
PROC PRINTDATA=simple1 noobs;
11
RUN;
2 Bloc de code
DATA STEP Data
Explication : Création de 'simple2'. L'ajout de l'instruction OUTPUT à l'intérieur de la boucle force l'écriture d'une observation à chaque itération. La table résultante aura donc 4 lignes.
Copié !
/*
Demonstration: Using the Output Statement
*/
data simple2;
do i = 1 to 4;
answer = 1 + i;
output;
end;
run;
proc print data=simple2 noobs;
run;
1
/*
2
Demonstration: Using the Output Statement
3
*/
4
DATA simple2;
5
DO i = 1 to 4;
6
answer = 1 + i;
7
OUTPUT;
8
END;
9
RUN;
10
11
PROC PRINTDATA=simple2 noobs;
12
RUN;
3 Bloc de code
DATA STEP Data
Explication : Similaire à l'exemple précédent, mais la variable d'itération 'i' est supprimée de la table finale grâce à l'option (drop=i).
Copié !
*Simple example #3;
data simple3 (drop=i);
do i = 1 to 4;
answer = 1 + i;
output;
end;
run;
proc print data=simple3 noobs;
run;
1
*Simple example #3;
2
DATA simple3 (drop=i);
3
DO i = 1 to 4;
4
answer = 1 + i;
5
OUTPUT;
6
END;
7
RUN;
8
9
PROC PRINTDATA=simple3 noobs;
10
RUN;
4 Bloc de code
DATA STEP Data
Explication : Démonstration d'une boucle avec un incrément (BY) de 2. La boucle itère pour i = 0, 2, 4, ..., 10.
Copié !
*Simple example #4;
data simple4 (drop=i);
do i = 0 to 10 by 2;
answer = 1 + i;
output;
end;
run;
proc print data=simple4 noobs;
run;
1
*Simple example #4;
2
DATA simple4 (drop=i);
3
DO i = 0 to 10BY2;
4
answer = 1 + i;
5
OUTPUT;
6
END;
7
RUN;
8
9
PROC PRINTDATA=simple4 noobs;
10
RUN;
5 Bloc de code
DATA STEP Data
Explication : Utilisation d'un incrément décimal (0.25). La boucle itère plus finement entre 0 et 10.
Copié !
*Simple example #5;
data simple5 (drop=i);
do i = 0 to 10 by .25;
answer = 1 + i;
output;
end;
run;
proc print data=simple5 noobs;
run;
1
*Simple example #5;
2
DATA simple5 (drop=i);
3
DO i = 0 to 10BY .25;
4
answer = 1 + i;
5
OUTPUT;
6
END;
7
RUN;
8
9
PROC PRINTDATA=simple5 noobs;
10
RUN;
6 Bloc de code
DATA STEP Data
Explication : Exemple de boucle décrémentale (compte à rebours) utilisant un pas négatif (BY -1), allant de 10 à 1.
Copié !
*Simple example 6;
data simple6 (drop=i);
do i = 10 to 1 by -1;
answer = 1 + i;
output;
end;
run;
proc print data=simple6 noobs;
run;
1
*Simple example 6;
2
DATA simple6 (drop=i);
3
DO i = 10 to 1BY -1;
4
answer = 1 + i;
5
OUTPUT;
6
END;
7
RUN;
8
9
PROC PRINTDATA=simple6 noobs;
10
RUN;
7 Bloc de code
DATA STEP Data
Explication : Itération sur une liste explicite de valeurs non séquentielles (10, 12, 23, 147).
Copié !
*Simple example 7;
data simple7 (drop=i);
do i = 10, 12, 23, 147;
answer = 1 + i;
output;
end;
run;
proc print data=simple7 noobs;
run;
1
*Simple example 7;
2
DATA simple7 (drop=i);
3
DO i = 10, 12, 23, 147;
4
answer = 1 + i;
5
OUTPUT;
6
END;
7
RUN;
8
9
PROC PRINTDATA=simple7 noobs;
10
RUN;
8 Bloc de code
DATA STEP Data
Explication : Illustration de boucles imbriquées. Note : la boucle interne 'do j = i**2;' n'est pas une boucle itérative classique (pas de 'to'), elle s'exécute une fois en assignant la valeur calculée à j. L'OUTPUT est déclenché à chaque passage.
Copié !
*Nesting do loops;
data nested;
do i = 1 to 10;
do j = i**2;
output;
end;
end;
run;
proc print data=nested noobs;
run;
1
*Nesting do loops;
2
DATA nested;
3
DO i = 1 to 10;
4
DO j = i**2;
5
OUTPUT;
6
END;
7
END;
8
RUN;
9
10
PROC PRINTDATA=nested noobs;
11
RUN;
9 Bloc de code
DATA STEP Data
Explication : Utilisation de DO WHILE. La condition est évaluée au début de la boucle. Si 'answer' est manquant au départ, la condition peut être fausse immédiatement ou nécessiter une initialisation (ici, SAS initialise implicitement à 0 pour l'instruction somme 'answer + 1', donc la boucle fonctionne).
Copié !
*Example of using do while;
data simple8;
do while (answer < 11);
answer + 1;
output;
end;
run;
proc print data=simple8 noobs;
run;
1
*Example of using do while;
2
DATA simple8;
3
DO while (answer < 11);
4
answer + 1;
5
OUTPUT;
6
END;
7
RUN;
8
9
PROC PRINTDATA=simple8 noobs;
10
RUN;
10 Bloc de code
DATA STEP Data
Explication : Utilisation de DO UNTIL. La condition est évaluée à la fin de la boucle, garantissant que le code à l'intérieur s'exécute au moins une fois.
Copié !
*Example of using do until;
data simple9;
do until (answer > 9);
answer + 1;
output;
end;
run;
proc print data=simple9 noobs;
run;
1
*Example of using do until;
2
DATA simple9;
3
DO until (answer > 9);
4
answer + 1;
5
OUTPUT;
6
END;
7
RUN;
8
9
PROC PRINTDATA=simple9 noobs;
10
RUN;
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.
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.