IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS IML Discussion :

[IML] transformer une table en une matrice


Sujet :

SAS IML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 103
    Points : 54
    Points
    54
    Par défaut [IML] transformer une table en une matrice
    Bonjour ,

    je souhaiterais transformer à l'aide d'une proc iml la table suivante en une matrice

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    paire           v1 
     
    p1 - p2       1
    p1 - p3       1
    p1 - p4       1
    p1 - p5       0
    p2 - p3       1
    p2 - p4       1
    p2 - p5       1
    p3 - p4       0
    p3 - p5       1
    p4 - p5       1
    et obtenir une matrice triangulaire avec des 1 sur la diagonale tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
        p1 p2 p3 p4 p5
    p1 1   1   1  1  0
    p2 1   1   1  1  1
    p3 1   1   1  0  1
    p4 1   1   0  1  1
    p5 0   1   1  1  1
    Merci !!!

  2. #2
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    +1

    Tu ne chercherais pas faire une matrice markovienne par hasard ?

    Je suis interesse par une solution,svp

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 77
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Je pensais à un tableau disjonctif, est-ce que cela conviendrait à ton besoin ?

    Si c'est la cas, j'ai fureté sur le net car je ne maitrise par super bien la proc transreg et j'ai trouvé ceci :

    http://jeanbaptiste.combes.free.fr/spip.php?article1

    qui permet de télecharger un programme zippé qui pourrait correspondre à ton besoin.

    Je sais que mettre des liens vers un autre site n'est pas trop recommandé dans les conditions d'utilisations mais comme dans ce cas précis c'est un programme sous licence, je ne voulais pas tomber sous le couperet des droits d'auteurs

  4. #4
    Membre habitué

    Homme Profil pro
    Consultant Support Client SAS
    Inscrit en
    Mai 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Support Client SAS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 94
    Points : 180
    Points
    180
    Par défaut
    Voici un bout de code qui n'est pas optimale, qui faudra modifier en fonction de vos observations mais je pense que cela conviendra parfaitement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    data toto;
    input paire $ v1;
    cards;
    p1-p2 1
    p1-p3 1
    p1-p4 1
    p1-p5 0
    p2-p3 1
    p2-p4 1
    p2-p5 1
    p3-p4 0
    p3-p5 1
    p4-p5 1
    ;
    run;
     
    data titi (drop=paire);
    set toto;
    length ligne 3. colonne 3.;
    ligne=substr(paire,2,1);
    colonne=substr(paire,5,1);
    if v1=1;
    run;
     
    proc iml;
    use titi;
    read all var _num_ into titi;
    close titi;
    print titi;
    matrice=J(5,5,0);
    print matrice;
    	do j=1 to 5;
    		matrice[j,j]=1;
    	end;
     
    	do i=1 to nrow(titi);
    		if titi[i,2]=titi[i,3] then matrice[(titi[i,2]),(titi[i,2])]=1;
    		if titi[i,1]=1 then matrice[(titi[i,2]),(titi[i,3])]=1;  
    		if titi[i,1]=1 then matrice[(titi[i,3]),(titi[i,2])]=1;
    		end;
    print matrice;
    create matrcie from matrice;
    append from matrice;
    quit;

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 11h17
  2. Réponses: 1
    Dernier message: 19/10/2011, 13h13
  3. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  4. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 15h29
  5. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 22h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo