Vous n'êtes pas identifié.
Vous êtes sur le forum du master ESA !
Le site du master ESA - description de la formation, notes de cours, contacts... vient de déménager !!!
Venez visiter notre nouveau site : www.master-esa.fr
Voici les données brutes (à copier coller tel quel sans aucune modification)
0 famille Dupont 4 Pierre 38 Sophie 37 Théodore 6 Marcelline 5 0 famille Dubois 3 Frédéric 42 Michelle 37 Marie 11 0 famille Durand 1 Jean 53 0 famille Dufour 2 Hervé 78 Marie 75
et voici ce à quoi vous devez arriver :
Obs nom cle i prenom age 1 Dupont 4 1 Pierre 38 2 Dupont 4 2 Sophie 37 3 Dupont 4 3 Théodore 6 4 Dupont 4 4 Marcelline 5 5 Dubois 3 1 Frédéric 42 6 Dubois 3 2 Michelle 37 7 Dubois 3 3 Marie 11 8 Durand 1 1 Jean 53 9 Dufour 2 1 Hervé 78 10 Dufour 2 2 Marie 75
entre DATA et CARDS, 8 instructions...
amusez-vous bien !
cordialement
SR
Hors ligne
J'arrive pas à faire mieux que ça :
Obs nom cle i prenom age 1 Dupont 4 1 . 2 Dupont 4 2 . 3 Dupont 4 3 . 4 Dupont 4 4 Pierre 38 5 Dubois 3 1 . 6 Dubois 3 2 . 7 Dubois 3 3 Frédéric 42 8 Dubois 3 4 Frédéric 42 9 Durand 1 1 Jean 53 10 Durand 1 2 Jean 53 11 Durand 1 3 Jean 53 12 Durand 1 4 Jean 53 13 Dufour 2 1 . 14 Dufour 2 2 Hervé 78 15 Dufour 2 3 Hervé 78 16 Dufour 2 4 Hervé 78
Je n'ai pas réussi à parcourir les lignes paires...
Hors ligne
bon, la solution :
DATA famille; RETAIN nom; INPUT cle @; IF cle=0 THEN INPUT @11 nom $; ELSE DO i=1 TO cle; INPUT @(3+15*(i-1)) prenom $12. age @@ ; OUTPUT; END; CARDS; 0 famille Dupont 4 Pierre 38 Sophie 37 Théodore 6 Marcelline 5 0 famille Dubois 3 Frédéric 42 Michelle 37 Marie 11 0 famille Durand 1 Jean 53 0 famille Dufour 2 Hervé 78 Marie 75 ;RUN;
la subtilité consistait ici, grâce à une boucle DO, à repérer les prénoms grâce à une instruction @X, avec X lié au numéro de la boucle. Ne pas oublier le @@ puisque, lorsque vous avez lu vos deux variables, SAS va vouloir aller à la ligne suivante. Le @@ lui indique de ne pas aller à la ligne suivante : il peut donc continuer à lire des informations sur la même ligne.
SR
Hors ligne
arf... presque !!
voici mon programme :
data bidon ; retain nom ; p=1 ; input cle @ ; if cle=0 then input @11 nom $ ; else do i=1 to 4 ; k=3*p ; if cle=i then input @k prenom $12. age :2. @@ ; p=p+5; output; end; cards; 0 famille Dupont 4 Pierre 38 Sophie 37 Théodore 6 Marcelline 5 0 famille Dubois 3 Frédéric 42 Michelle 37 Marie 11 0 famille Durand 1 Jean 53 0 famille Dufour 2 Hervé 78 Marie 75 ;run;
Pourquoi il ne marchait pas ?!!
fallait quand même trouvé une relation entre : 3 18 33 48 !
Hors ligne
ah ok !! c'est : do i=1 to "cle" sans le "if" ! j'ai rien dit ! lol
Hors ligne