Les posteurs les plus actifs de la semaine
Eric Wajnberg
 
patraster
 
ameliev
 
Coco
 


Table contingence avec SAS.

Aller en bas

Table contingence avec SAS.

Message par FMarwen le Ven 7 Mar 2014 - 18:01

Bonjour à tous,

Je dispose d'une base de donnée ayant ce format (c.PNG cijointe)
mon objectif est de compter la fréquence d'apparition de chaque variable X Y Z ...
dans les observations de la colonne var1 d'ou je veux avoir ceci comme résultat (cc.PNG cijointe)
je cherche la commande SAS permet de faire ça ? quelqu'un peux me aider SVP! merci beaucoup d'avance.
Fichiers joints
cc.PNG Vous n'avez pas la permission de télécharger les fichiers joints.(30 Ko) Téléchargé 4 fois
c.PNG Vous n'avez pas la permission de télécharger les fichiers joints.(33 Ko) Téléchargé 2 fois

FMarwen

Nombre de messages : 226
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Table contingence avec SAS.

Message par niaboc le Mer 12 Mar 2014 - 10:22

Bonjour,

si ce n'est pas trop tard, voici une solution possible. Dis-moi si ça te va :

Code:
/*je me reconstruis ta table de données.
Comme il n'y avait toujours que 3 lettres possibles dans la colonne 'données' de ton exemple, je suis parti du principe
que c'était toujours le cas*/
data donnees;
   input donnees $ 1-10;
   cards;
   X Y Z
   A B C
   Y Z X
   B Y X
   X R S
   R A X
   ;
run;


/*macro de création du tableau disjonctif complet.
La table de sortie va porter le même nom de la table en entrée, mais avec un "2" à la fin*/
%macro Tab_disj_comp(table);

   /*on crée une table temporaire avec 3 variable comprenant chacune une lettre des données*/
   data temp;
      set &table;
      var1=substr(donnees,1,1);
      var2=substr(donnees,3,1);
      var3=substr(donnees,5,1);
   run;

   /*création de macro variables*/
   data temp;
      set temp;
      call symput("var1"||trim(left(_N_)),var1);
      call symput("var2"||trim(left(_N_)),var2);
      call symput("var3"||trim(left(_N_)),var3);
   run;

   data &table.2;
      set temp;
      %do j=1 %to 3;
         %do i=1 %to 6;
         /*si la variale est égale à la macro variable alors on crée une variable portant le nom de la macro variable et qui vaut 1*/
            if var&j="&&var&j&i" then do;
               &&var&j&i=1;
            end;
         %end;
      %end;
   run;

   /*on remet toutes les données manquantes à 0*/
   data &table.2;
      set &table.2;
      array vect_var _numeric_;
      do over vect_var;
         if vect_var=. then vect_var=0;
      end;
      drop var1 var2 var3;
   run;

   /*on supprime la table temporaire*/
   proc delete data=temp;
   run;
         
%mend Tab_disj_comp;

%Tab_disj_comp(donnees);

Si tu l'as fait autrement, je suis preneur également!

Niaboc
avatar
niaboc

Nombre de messages : 951
Age : 31
Localisation : Paris
Date d'inscription : 05/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Table contingence avec SAS.

Message par FMarwen le Mer 12 Mar 2014 - 22:49

Merci beaucoup.

FMarwen

Nombre de messages : 226
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Table contingence avec SAS.

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum