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 :

Obtenir les dernières lignes (et non pas "la") [DATA]


Sujet :

SAS Base

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut Obtenir les dernières lignes (et non pas "la")
    Bonjour !

    J'ai un problème de sélection de lignes dans une étape data.

    Voici un exemple : j'ai une colonne identifiant et une colonne indiquant un numéro. Pour chaque identifiant, je veux sortir toutes les lignes correspondant au dernier numéro (donc, si le dernier numéro apparaît 5 fois, je dois avoir 5 lignes).
    Ici un code rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    data t1;
        ID=1;   NUMBER=1; output;
        ID=1;   NUMBER=2; output;
        ID=1;   NUMBER=2; output;
        ID=2;   NUMBER=1; output;
        ID=2;   NUMBER=1; output;
        ID=2;   NUMBER=2; output;
        ID=2;   NUMBER=3; output;
    run;
    Je suis censé obtenir deux lignes pour l'ID=1 (car le dernier numéro, le 2, apparaît deux fois) et une seule ligne pour l'ID=2.

    J'ai renté avec des "by ID NUMBER" et des if.last mais ça ne marche pas. J'ai tenté un RETAIN également mais sans succès...

    Merci si vous pouvez m'aider !

    alers

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    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 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello,
    Si j'ai bien compris ton problème, ce code peut répondre à ton besoin :
    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
     
     
    proc sort data=T1;
    by id   descending number;
    run;
     
     
     
    data t2 (drop=tmp);
    set t1;
    by id ;
    retain tmp ;
    if first.id then  do; tmp=number ;output;end;
    else if number=tmp then output;
    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

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut
    Bonjour,

    Ça fonctionne très bien ! Merci beaucoup !

    alers

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

Discussions similaires

  1. [AC-2003] operation sur les ligne et non pas sur les colonnes
    Par omarnigth dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 21/11/2011, 21h25
  2. Insertion sous la derniere ligne (et non pas sur)
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/08/2007, 10h28
  3. Récupérer les dernières lignes modifiées
    Par Mythrandil dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/06/2007, 10h33

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