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] Optimiser programme avec IML


Sujet :

SAS IML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Points : 20
    Points
    20
    Par défaut [IML] Optimiser programme avec IML
    Bonjour à vous !

    je résume la situation par un exemple :

    - données en entrée, 2 variables ident, val1 (ce que j'ai)
    Ident val1
    1 0.5
    2 0.4
    3 0.3
    4 0.6
    5 0.7


    - données en sortie, 3 variables ident1, ident2, resultat (ce que je veux)
    Ident1 Ident2 resultat
    1 2 (val1 de ident1- val1 de ident2)**2
    1 3 (val1 de ident1- val1 de ident3)**2
    1 4 ...........
    1 5 ...........
    2 3 ...........
    2 4 ...........
    2 5 ...........
    3 4 ...........
    3 5 ...........
    4 5 (val1 de ident4- val1 de ident5)**2


    problème : réellement, j'ai une table de plusieurs milliers de données, et que en procédant avec des call symput pour récupérer la valeur de chaque ident, ça prend un temps inimaginable (je ne suis pas arrivé au bout...)
    la table en sortie fait au final (n*n-1)/2 observations. Dans mon exemple, avec 5 individus, nous n'avons que 10 lignes mais avec 10000 individus, je suis à 49995000 lignes :-s

    question : y a-t-il un moyen d'aller plus vite (proc IML par exemple)

    Merci beaucoup de votre réponse !

    Cordialement

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 181
    Points
    181
    Par défaut
    Salut,

    Je me rapelle plus trop comment marche IML, je te propose une solution en SQL. Je suis curieux de connaitre le temps de traitement...


    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
    data a;
        input var1 var2;
    cards;
    1 0.5
    2 0.4
    3 0.3
    4 0.6
    5 0.7
    ;
    run;
    proc sql noprint;
        create table c as select 
          aa.var1
        , bb.var1 as bvar1 
        , aa.var2 
        , bb.var2 as bvar2 
        , (aa.var2 - bb.var2)**2 as total
    from  a aa, a bb  
    where aa.var1 < bb.var1
    ;
    quit;
    Cordialement

    Suistrop

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    Il te faut utiliser le hashtable.

    Tu lis une fois la table pour la mettre dans le hash.
    Puis tu la relis et la pour chaque observation tu relis les infos en allant les chercher dans le hash.

    Xav

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Merci, finalement j'ai opté pour la proc IML,
    j'ai juste un problème pour affecter mes identifiants aux colonnes finales...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation d'un programme avec un LVL 66 ?
    Par rockley dans le forum Cobol
    Réponses: 7
    Dernier message: 30/04/2015, 02h31
  2. Proc IML et boucle avec DO %end
    Par sam2510 dans le forum SAS IML
    Réponses: 1
    Dernier message: 19/04/2015, 13h56
  3. Liens : Aide à la programmation avec DirectX
    Par djbed dans le forum DirectX
    Réponses: 11
    Dernier message: 23/03/2007, 00h30
  4. Commencer la programmation avec le langage Java ?
    Par von_magnus dans le forum Débuter
    Réponses: 14
    Dernier message: 09/03/2004, 23h19
  5. Réponses: 3
    Dernier message: 27/08/2003, 22h14

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