Annonce

Bienvenue sur le site support de mes ouvrages d'introduction à SAS

La 4ème édition de mon ouvrage est toujours disponible !

Où trouver cet ouvrage ?


#1 06-03-2013 07:39:58

SAS-SR
Administrateur
Lieu: Université d'Orléans
Date d'inscription: 01-09-2008
Site web

[archive] Manipuler des données de calendrier avec SAS

Bonjour,

Il m’arrive assez souvent d’avoir des questions sur des tables dans lequel on suit l’évolution d’individus au moyen d’un calendrier. Voici un petit exemple de table :

Code:

ind    t1    t2    t3    t4    t5    t6    t7    t8    t9    t10

 1      .     .     .     .     3     1     4     2     2     3
 2      .     .     .     .     .     .     1     .     .     .
 3      .     3     2     3     1     1     2     .     .     .
 4      .     .     .     4     2     2     2     .     .     .
 5      .     1     3     3     1     4     1     1     2     .

Les variables T1 à T10 vous donnent le statut de l’individu au cours des mois 1 à 10. L’individu 1 est « arrivé » le mois 5, avec une statut 3, il est reste dans la table jusqu’au mois 10, soit 6 périodes - le statut a connu des variations entre les deux dates.

L’individu 2 n’est resté qu’un mois dans la table (mois 7). L’individu 3 est arrivé le mois 2 et il est sorti de la table le mois 7.

Ces tables posent généralement aux utilisateurs de SAS des difficultés et nous allons examiner au moyen de quelques exercices.

La table que nous allons manipuler est créée par le programme suivant :

Code:

data test(drop=mlo mla i alea);
array t(200);
   do ind=1 to 100000;
      mlo=ceil(200*ranuni(54));
      mla=ceil(200*ranuni(32));
      do i=1 to 200;
         t(i)=.;
         alea=ranuni(47);
         if i>min(mlo,mla) then t(i)=1+4*((alea>.90)+(alea>.95));
         if i>max(mlo,mla) then t(i)=.;
      end;
   output;
end;
run;

Nous allons donc travailler sur une table de 100 000 observations et 200 variables T. Les variables T, si elles ne sont pas en valeur manquante, peuvent prendre les valeurs 1 (dans 90% des cas), 5 (5% des cas) ou 9 (5% des cas). Nous allons considérer que ces modalités 1,5 et 9 décrivent le statut de l'individu à chaque période. Entre le moment où l'individu présente pour la première fois un statut et le moment où on dispose pour la dernière fois d'un statut, il n'y a pas de valeur manquante.

Vous allez me dire « mais on ne peut pas travailler sur moins d’observations et moins de variables ? ».

Non

En vous proposant une table « importante » (mais ce n’est pas grand-chose par rapport à ce que vous pouvez rencontrer dans la vie réelle), je vais aussi vous inviter à programmer « efficacement » et donc à adopter de bonnes pratiques… Il existe toujours plusieurs manières d’obtenir un même résultat mais certains programmes peuvent être particulièrement  « gourmands » et prendre des heures à être exécuté alors qu’au moyen d’une programmation astucieuse, il ne prendra que quelques secondes (ou minutes…).

Donc, pour la semaine prochaine, vous allez devoir construire cinq nouvelles variables :

Variable DEB : le mois d’arrivée de chaque individu dans la table (5 pour le premier individu de ma table exemple présentée plus haut).
variable STA1 : le statut de l’individu au moment où il rentre dans la table (3 dans le cas de ma table exemple pour le premier individu)
Variable OUT : le mois de sortie de chaque individu (10)
variable STA2 : la statut de l’individu au moment où il sort de la table (3)
variable PER : le nombre de périodes pendant lesquelles on dispose pour l’individu d’un statut (6)

Amusez vous bien ;-)

Ce sujet est maintenant archivé - seuls les utilisateurs inscrits de www.sas-sr.com peuvent consulter l'intégralité du sujet et les programmes qui répondent aux très nombreuses questions qui ont été posées ensuite.
pour vous identifier, suivez ce lien
pour vous inscrire, suivez ce lien

Dernière modification par SAS-SR (17-04-2013 07:23:05)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr
Flux RSS