Le forum du Master ESA économétrie et statistique appliquée - Université d'Orléans

Vous n'êtes pas identifié.

Annonce

Vous êtes sur le forum du master ESA !

Le site du master ESA - description de la formation, notes de cours, contacts... est ici :

http://www.univ-orleans.fr/deg/masters/ESA/

#1 09-07-2008 12:42:58

esa_sr
Administrator
Date d'inscription: 21-02-2007
Messages: 5069
Site web

petit problème amusant : ordonner en colonne

bonjour,

une ancienne étudiante vient de me contacter et me propose le problème suivant :

elle dispose d'une table comprennant 37 variables - la première variable saisie le nom de la commune, les 36 autres indiquent le nombre de salariés, habitant de la commune et travaillant dans les secteurs 1, 2,3... 36

le programme suivant vous crée une table fictive :

Code:

DATA test;
      INPUT COMM $;
      ARRAY nes NES1-NES36;
      DO i=1 TO 36;
           NES(i)=ROUND(RANUNI(1234)*1000,1);
      END;
CARDS;
a
b
c
d
e
f
;RUN;

pour obtenir :

Code:

            Obs    COMM    NES1    NES2    NES3    NES4    NES5 .....

             1      a       244      89     383      98     258
             2      b       546     978     535     421     493
             3      c       153     524     381     911     275
             4      d       557     916     295     111     873
             5      e       429     658     862      61      85
             6      f       551     286     378     144     521

Elle souhaite créer 5 nouvelles variables SECT1-SECT5 qui reprendront les cinq valeurs maximales parmi NES1-NES36 (soit 967    906    906    798    773) pour l'individu a) et cinq autres nouvelles variables SECT_T1-SECT_T5 qui reprendront en toutes lettres les noms des variables correspondants au maximum ( NES15    NES14    NES29    NES31    NES36 pour l'individu a).

Pas besoin de PROC TRANSPOSE, de PROC UNIVARIATE, ni de macro - une simple étape DATA suffit.

petite question bonus.

modifiez votre table initiale de la façon suivante :

Code:

DATA test; 
      SET test;
      IF comm='a' THEN nes1=906;
RUN;

Relancez le programme que vous venez d'écrire pour répondre aux questions posées - il est possible que NES1 ne soit pas modalité de SECT_T1 ou SECT_T2...

(ce problème de doublon se pose en fait avant même la modification apportée par le programme ci-dessus pour les individus a, b et f - si vous avez réglé ce problème dès le départ, la modification doit vous permettre de voir si vous savez aussi traiter correctement le problème en cas de triplon...)

amusez vous bien

cordialement

SR

Hors ligne

 

#2 30-07-2008 11:39:33

Lucie
Member
Date d'inscription: 08-03-2007
Messages: 16

Re: petit problème amusant : ordonner en colonne

Si j'ai bien compris le problème ce prog devrait fonctionner pour la première partie.......pour la suite, on verra une autre fois......la pause est finie...

Code:

proc sort data = test;
    by comm;
run;
data test2;
    set test;
    array nes NES1-NES36;
    by comm;
    retain sect1 0;
    do i=1 to 36;
        if NES(i) > sect1
            then do;
                sect1 = NES(i);
                sect_t1 = compress('NES'!!i);
            end;
        if sect1 > NES(i) > sect2
            then do;
                sect2 = NES(i);
                sect_t2 = compress('NES'!!i);
            end;
        if sect2 > NES(i) > sect3
            then do;
                sect3 = NES(i);
                sect_t3 = compress('NES'!!i);
            end;
        if sect3 > NES(i) > sect4
            then do;
                sect4 = NES(i);
                sect_t4 = compress('NES'!!i);
            end;
        if sect4 > NES(i) > sect5
            then do;
                sect5 = NES(i);
                sect_t5 = compress('NES'!!i);
            end;
    end;
    if last.comm then do;
        output;
        sect1 = 0;
        sect2 = 0;
        sect3 = 0;
        sect4 = 0;        
        sect5 = 0;
    end;
run;

Cdt.

Hors ligne

 

#3 30-07-2008 11:46:51

Lucie
Member
Date d'inscription: 08-03-2007
Messages: 16

Re: petit problème amusant : ordonner en colonne

Euh .... en fait, je crois que le retain sert à rien dans mon truc.........

Hors ligne

 

#4 17-10-2008 18:42:52

esa_sr
Administrator
Date d'inscription: 21-02-2007
Messages: 5069
Site web

Re: petit problème amusant : ordonner en colonne

celui là est aussi en panne...

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson