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 Base Discussion :

Comparaison de données


Sujet :

SAS Base

  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut Comparaison de données
    Bonjour,

    Je souhaite comparer des données les unes avec les autres,
    ex :
    Tab0 |Var1 Var2 Var3 |
    -----------------------
    Ind1 |val11 val12 val13|
    Ind2 |val21 val22 val13|

    Ind3 |val31 val32 val33|
    Ind4 |val41 val42 val43|
    Ind5 |val51 val52 val53|

    -----------------------
    Je veux ici comparer Ind2 et Ind5, en vérifiant si val21=val51, val22=val52, val23=val53...

    Pour ce faire, j'ai pensé décomposer ces données en 2 tables :
    |TabA |Var1 Var2 Var3 | |TabB |Var1 Var2 Var3 |
    |-----------------------| |-----------------------|
    |Ind2 |val21 val22 val13| |Ind5 |val51 val52 val53|
    |-----------------------| |-----------------------|

    Pour pouvoir ensuite les rassembler en une table :
    TabAB |Var1A Var2A Var3A Var1B Var2B Var3B|
    ---------------------------------------------
    Ind25 |Val21 Val22 Val13 Val51 Val52 Val53 |
    ---------------------------------------------
    Ce qui me permettrait d'appliquer une condition à la création d'une nouvelle variable :
    If Var1A=Var1B then Var1C=...;

    Ce qui me bloque dans cette méthode, c'est que je ne sais pas comment donner de manière automatique des indices (A ou B) aux variables sans avoir à énumérer l'ensemble d'entre elles, et sachant qu'elles n'ont pas la même racine comme dans l'exemple (Var). Avez-vous une solution à me donner ?

    Si vous avez une autre méthode à me proposer pour la comparaison des données, je suis preneuse aussi.

    Merci
    Viougt

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Par défaut
    tu as regardé la PROC COMPARE ?

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    C'est impeccable !
    Pile poil ce que je cherchais !

  4. #4
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Bonjour,

    Concernant la Proc Compare, j'ai vu qu'avec les options "outbase", "outcomp" et "outdif" on peut décider de faire apparaître les données de la table de base, de la table comparée et les indications de différences, sur 3 lignes distinctes pour un même identifiant.

    Tout d'abord, je viens de constater qu'une exportation (sur Excel ou Access en l'occurence) efface les valeurs de la ligne "DIF"... normal puisqu'il s'agit de "E" pour des variables numériques par exemple !
    Comment palier à ce problème ?

    D'autre part, pour gagner du temps de lecture, je souhaite faire apparaître les données des 2 tables uniquement pour les valeurs inégales (DIF~= "E" ou "........."), sans passer toutes les variables en revue les unes après les autres. Auriez-vous une méthode adéquate ?

    Merci
    Viougt

  5. #5
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Hello,
    tu parles de perte de données quand t'exportes de SAS vers Excel ou Access?
    je viens de faire un test il m'export bien la table et les données sont tout est intacte.
    En ce qui concerne ta deuxième question, je ne l'ai pas bien saisie , si tu veux faire la comparaison en sélectionnant que quelques variables;
    T'as l'instruction va; pour une variable ID t'as l'instruction ID.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  6. #6
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Dans la Ligne "DIF" (option OUTDIF) je perd l'information "E" (égalité) ou vide (différence) pour les variables numériques.
    Le reste des données ne bouge pas en effet, mais ce qui m'intéresse c'est d'identifier rapidement les différences.

    Je veux garder toutes les variables, mais en appliquant des valeurs vides pour le cas des égalités (DIF= "E" ou "....."). Ca me permet de ne voir que les cas de discordance entre les 2 tables.

  7. #7
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    tu rajoutes OUTNOEQUAL; si tu ne veux avoir comme résultat que les valeurs ou il y a une différence entre les deux tables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    PROC COMPARE BASE=tab
                 COMP=tab1
                 OUT=DIFFERENCES
                 OUTBASE
                 OUTCOMP
                 OUTNOEQUAL
                 OUTDIF
                 NOPRINT;
     
    RUN;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  8. #8
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    J'ai déjà appliqué "OUTNOEQUAL", mais il enlève les variables pour lesquelles toutes les valeurs sont égales.
    Pour les variables qui contiennent au moins une différence, il garde l'ensemble des valeurs (égales ou différentes).

  9. #9
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    dans ce cas là , tu rajoutes une étape data ou une proc sql après la proc compare pour faire des filtres et ne garder que ce qui t'intéresse.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  10. #10
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Je comptais effectivement passer une requête (DATA : IF THEN ELSE ou SQL : WHERE), mais la difficulté, s'il n'y a pas d'option plus appropriée, c'est que c'est un tableau à 3 dimensions : Individus, Variables, Comparaison (BASE, COMPARE, DIF).
    D'autre part j'aurais aimé appliquer la condition sur chaque variable (ex : utilisation de CONTENTS), sans avoir à les énumérer, pour automatiser le plus possible la table de comparaison quelque soit la table d'origine.

  11. #11
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Toujours à la suite de l'utilisation de ma Proc Compare, j'ai :

    _TYPE_----ID---VAR1---VAR2
    BASE-------1----11-----v11
    COMPARE---1----10-----v11
    DIF---------1----01------...
    BASE-------2----22-----v22
    COMPARE---2----22-----v20
    DIF---------2---- E------..X

    Je souhaite faire apparaître les données uniquement si BASE et COMPARE sont différents :

    _TYPE_----ID---VAR1---VAR2
    BASE-------1----11-----___
    COMPARE---1----10-----___
    DIF---------1----01-----___
    BASE-------2----__-----v22
    COMPARE---2----__-----v20
    DIF---------2----__------..X

    J'ai commencé quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
         
    /* pour les variables numériques */
    array A_VarNum[*] _NUMERIC_ ;   		
    do _i=1 to dim( A_VarNum ) ;
    If A_VarNum (_i)=.E then ???; 
    End ;
    /* pour les variables caractère */
    array A_VarChar[*] _CHARACTER_ ;  
    do _i=1 to dim( A_VarChar ) ;
    If lengthn(compress(tranwrd(A_VarChar (_i),".","")))=0 then ??? ; 
    End ;
    Mais je ne sais pas comment renvoyer la condition aux lignes du dessus correspondantes aux même ID !

Discussions similaires

  1. Comparaison de données dans un tableau
    Par Azertime dans le forum LabVIEW
    Réponses: 3
    Dernier message: 12/05/2007, 23h13
  2. [VBA-E] Comparaison de donnée + Msgbox
    Par GardienDuCode dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 01/03/2007, 09h55
  3. comparaison de données
    Par fbu78 dans le forum Access
    Réponses: 2
    Dernier message: 01/02/2007, 08h06
  4. Comparaison de données entre deux arrays
    Par sironimo dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 20/04/2006, 17h44
  5. Comparaison des données de deux schéma de mêmes structure
    Par Moez Sokrati dans le forum Oracle
    Réponses: 1
    Dernier message: 28/03/2006, 18h24

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