options linesize=80 nonumber nodate formdlim='-'; filename donnees "R:\Formations\Sas\prog2.dat"; /* Il faut ecrire le chemin complet si le fichier de donnees ne se trouve pas dans le meme repertoire que le programme */ title1"Exemple numero 2"; /* titre general*/ /*creation du jeu de donnees*/ data invente; infile donnees; input #1 groupe $ 1 var2 2-7 .2 var3 8-12 .3 var4 13-15 #3; /* Par defaut, chaque ligne du fichier de donnees represente une observation. Ici, chaque observation comporte trois lignes de variables (#3), mais on veut lire que celles de la premiere ligne (#1). La premiere variable n'a qu'un seul caractere alphanumerique ($) et se nomme "groupe". Les autres variables sont toutes numeriques. La deuxieme comporte 6 chiffres significatifs dont 2 decimales (.2), la troisieme 5 chiffres dont 3 decimales (.3) et la quatrieme 3 chiffres sans decimale. Attention: des caracteres non-numeriques deceles dans un champ numerique incite SAS a transformer ce champ en valeur manquante! */ /* transformation des variables 3 et 4 par le log et la racine */ var3 = sqrt(var3); var4 = log(var4); /* associer des etiquettes aux variables */ attrib var2 label='deuxieme variable'; attrib var3 label='troisieme variable'; attrib var4 label='quatrieme variable'; run; /* l'impression des donnees separement (by) pour chaque valeur de la variable "groupe", en utilisant les etiquettes precedentes (label), en arrondissant toutes les valeurs a deux decimales (round), en supprimant l'impression du numero des observations (noobs) et finalement, en ajoutant la somme (sumby) de chaque variable pour chaque groupe. */ /* il faut d'abord trier le jeu de donnees selon la variable groupe: */ proc sort data=invente; by groupe; run; proc print data=invente noobs label round; title; /* Supprime tous les titres */ by groupe; /* sumby groupe;*/ run; libname nomlib "R:\Formations\Sas\exemple"; data nomlib.jeu1; set invente; run;