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 :

Modification table : incrementer une nouvelle variable en fonction d'une condition


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Modification table : incrementer une nouvelle variable en fonction d'une condition
    Bonjour à tous,
    J'importe depuis un fichier .txt une table avec plusieurs variables dont cep et ref. La table se présente sous la forme suivante :

    cep ref ...

    5 10
    6 23
    8 41
    9 3
    10 4
    15 56
    16 28
    18 2
    19 36
    20 53
    ...

    Voilà ce que j'aimerais obtenir (rajouts en rouge) :

    cep ref ...

    5 10
    6 23
    7 0
    8 41
    9 3
    10 4
    11 0
    12 0
    13 0
    14 0

    15 56
    16 28
    17 0
    18 2
    19 36
    20 53
    ...

    J'aimerais incrementer la variable cep de 1 lorsque ce n'est pas le cas, et mettre ref à 0 pour ces valeurs là. Comment pourrais-je faire ?
    Merci beaucoup !

  2. #2
    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 en fais quoi apres de cette table "complétée" ?

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour.
    Une solution serait de créer une table complète pleine de zéros pour REF, et ensuite tu fusionnes (MERGE par exemple) en mettant ta table importée en 2e (pour que les valeurs de REF écrasent les 0 quand il y a effectivement une valeur).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DATA work.squelette ;
      DO cep = 5 TO 20 ;
       ref=0 ;
       OUTPUT ;
      END ;
    RUN ;
    DATA work.resultat ;
      MERGE work.squelette work.donnees ;
      BY cep ;
    RUN ;
    Bon courage.
    Olivier

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 16
    Points : 11
    Points
    11
    Par défaut proc sql et lignes qui se répètent
    Merci beaucoup cela fonctionne très bien ! c'est une très bonne idée.

    Dans ma table de départ (donnees) avec cep et ref j'avais une troisième variable appelée id que j'aimerais conserver dans ma table finale une fois que j'ai fais la fusion.
    J'ai essayé avec une proc sql mais j'ai plein de lignes identiques qui se répètent....

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DATA table1 ;
      DO cep = 5 TO 20 ;
       ref=0 ;
       OUTPUT ;
      END ;
    RUN ;
    DATA fusion ;
      MERGE table1 donnees ;
      BY cep ;
    RUN ; 
     
    proc sql;
    create table res1 as select fusion.cep as cep, fusion.ref as ref, id from fusion, donnees;
    J'ai aussi essayé avec l'instruction KEEP mais cela ne marche pas non plus...

    Merci encore !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/08/2013, 10h43
  2. Réponses: 2
    Dernier message: 21/07/2012, 23h24
  3. Réponses: 10
    Dernier message: 20/06/2012, 14h39
  4. Réponses: 5
    Dernier message: 11/10/2011, 14h29
  5. Réponses: 2
    Dernier message: 16/02/2011, 14h59

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