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 :

comparer 2 data set(tables) et mettre à jour les valeurs différente


Sujet :

SAS Base

  1. #1
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut comparer 2 data set(tables) et mettre à jour les valeurs différente
    Bonjour tout le monde,

    Je suis débutant avec SAS et je cherche comment comparer 2 data set. Si les valeurs pour chacunes des variables ne sont pas identique, je veux faire un update du premier data set avec les bonnes valeurs trouvé dans le 2ieme dataset.

    Les 2 data set non pas nécessairement les mêmes noms de variables, mais il correspondent en type et en nombre de variables

    Ex.:
    ds1
    Id Nom Prenom Telephone

    ds2
    Num Lastname Firstname Phone


    Merci de votre aide
    There are no secrets to success. It is the result of preparation, hard work, and learning from failure.

  2. #2
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    l'idéal, je crois, serait de boucler dans les 2 data set et si je rencontre une valeur différente, je met à jour l'autre valeur.

    Comment faire ? ?
    There are no secrets to success. It is the result of preparation, hard work, and learning from failure.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 113
    Points : 107
    Points
    107
    Par défaut
    tu travailles avec quelle version de sas ?

  4. #4
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par lhonolulu Voir le message
    tu travailles avec quelle version de sas ?
    Version 9.1
    There are no secrets to success. It is the result of preparation, hard work, and learning from failure.

  5. #5
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    Suis-je le seul à vouloir mettre à jour un dataset à partir d'un autre dataset. Il me semble que c'est simple comme problème........je me trompe peut-être

    En passant mon deuxième dataset n'a pas le même nombres d'enregistrements, mais le même nombre de colonnes de même type.

    à l'aide
    There are no secrets to success. It is the result of preparation, hard work, and learning from failure.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 113
    Points : 107
    Points
    107
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data table_maj ;
       modify table_maj table_new_val ;
       by variables_identifiants ;
       if _iorc_ = 0 then replace /* _iorc_ = 0 signifie que l'observation se trouve dans les deux tables */
    run;
    les noms de tes variables doivent donc toutes avoir le même nom, sinon la mise à jour ne fonctionnera pas ou plutôt mal.
    Fais un rename dans le modify sur table_new_val pour obtenir les mêmes noms

  7. #7
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par lhonolulu Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data table_maj ;
       modify table_maj table_new_val ;
       by variables_identifiants ;
       if _iorc_ = 0 then replace /* _iorc_ = 0 signifie que l'observation se trouve dans les deux tables */
    run;
    les noms de tes variables doivent donc toutes avoir le même nom, sinon la mise à jour ne fonctionnera pas ou plutôt mal.
    Fais un rename dans le modify sur table_new_val pour obtenir les mêmes noms
    Merci lhonolulu,

    je ne sais pas si cela est normal, il manque peut-être une information, mais j'ai cet erreur ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERREUR 455-185: Aucune table n'a été spécifiée dans l'instruction DATA.
    There are no secrets to success. It is the result of preparation, hard work, and learning from failure.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 113
    Points : 107
    Points
    107
    Par défaut
    Ca doit être du au point vurgule que j'ai oublié après le if.
    Pour utiliser le data modify, la nouvelle table qui est mise à jour doit déjà existé. cette étape n'en crée pas une nouvelle mais la met à jour seulement.

  9. #9
    Membre du Club Avatar de Dirty Harry
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    J'ai trouvé une alternative qui fonctionne très bien et qui est très simple aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROC SORT DATA = data_set_original;
    	BY Id;
    run;
    PROC SORT DATA = data_set_new;
    	BY Id;
    run;
    DATA data_set_final;
    	UPDATE data_set_original data_set_new;
    	BY Id;
    run;
    Cependant, je dois recréer un nouveau data set parce que je ne peux pas modifier un data set qui contient des contrainte d'intégrité.

    En tout cas, j'ai remarqué qu'avec SAS, on doit créer beaucoup de data set temporaire pour arriver à nos fins. C'est un peux souffrant cette approche de toujours créer plusieurs data set identique juste pour pouvoir insérer ou modifier des données.

    Je te remercie lhonolulu
    There are no secrets to success. It is the result of preparation, hard work, and learning from failure.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 113
    Points : 107
    Points
    107
    Par défaut
    Comme tu le dis, là tu crées un nouveau data set. Donc si tu avais des contraintes dessus tu es obligé de les recréer.
    la data modify fonctionne normalement très bien.
    L'essentiel est d'arriver à ses fins

  11. #11
    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
    tu peux desactiver les contraintes via proc datasets

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

Discussions similaires

  1. "Mettre à jour les valeurs"
    Par nath-0-0 dans le forum Excel
    Réponses: 2
    Dernier message: 12/05/2010, 16h18
  2. Réponses: 3
    Dernier message: 13/08/2008, 08h54
  3. Réponses: 4
    Dernier message: 04/05/2008, 23h39
  4. Réponses: 2
    Dernier message: 15/10/2007, 13h28
  5. Réponses: 3
    Dernier message: 14/06/2007, 13h47

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