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

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    octobre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : octobre 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Récupérer la dernière valeur d'une variable pour groupe d'ID
    Bonjour à tous,

    Je démarre la programmation SAS et j'aimerais savoir s'il est possible de récupérer la dernière valeur d'une variable pour un groupe d'ID et la mettre à la première ligne de ce même groupe ?

    Je m'explique avec cet exemple ; Voici ce dont je dispose

    ID var_a_recup
    1 .
    1 1
    1 2
    2 .
    2 1
    2 2
    2 3
    3 .

    J'aimerais avoir ça;

    ID var_a_recup
    1 2
    1 1
    1 .
    2 3
    2 1
    2 2
    2 .
    3 .

    En gros c'est une sorte "d'échange" entre le first et le last pour un même groupe d'ID. Est-ce possible ? Si oui, je pense que c'est un peu complexe pour moi, une aide me serait très utile

    Bonne journée,

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    janvier 2013
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : janvier 2013
    Messages : 467
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,
    Une solution à l'aide de table hachage pour un échange entre le first et le last pour un même groupe d'ID.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    data TABLE ;
    input ID var_a_recup ;
    cards ;
    1 .
    1 1
    1 2
    2 .
    2 1
    2 2
    2 3
    3 .
    ; run ;	
     
     
    data TABLE1 ; 
    set TABLE ;
    by Id notsorted ; 
    Temp=0 ;
    if First.id then Temp=First.id ;
    if Last.id  then Temp=Last.id+1 ;
    run ;   
     
    data Finale (drop=Temp rc) ;	
     if _n_ = 1 then do ;
     if 0 then set TABLE1 ;
     declare hash hoss(dataset:'TABLE1') ;
     hoss.definekey ('ID', 'Temp');
     hoss.definedata('Var_a_recup');	
     hoss.definedone();
    end ;  
     
    set TABLE1 ;
    by Id notsorted ; 
    if First.id then Temp=First.id+1 ;
    if Last.id  then Temp=Last.id ;	
    rc=hoss.find() ;
    run ;
    Cordialement
    Ward

  3. #3
    Membre du Club
    Femme Profil pro
    Formatrice en SAS (en ligne)
    Inscrit en
    mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Formatrice en SAS (en ligne)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : mai 2019
    Messages : 28
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Tu peux utiliser retain avec first.... pour sauvegarder la valeur de ta première observation de chaque ID dans une variable intermédiaire
    et retain avec first... sur les données triées par ordre décroissant pour sauvegarder la valeur de la dernière observation de chaque ID dans une variable intermédiaire.

    Ensuite, tu peux replacer la valeur d'origine par la valeur de la variable temporaire quand tu es sur la première/dernière observation (first/last).

    Bon courage
    Véronique

Discussions similaires

  1. [Binding / DataGrid] Récupérer la dernière valeur d'une liste
    Par Hyome dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 16/11/2010, 22h23
  2. Récupérer la dernière commande dans une variable
    Par ssc37 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 09/10/2009, 12h39
  3. Dernière valeur d'une variable dans une boucle.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/12/2007, 20h34
  4. Réponses: 6
    Dernier message: 29/11/2007, 16h15
  5. Réponses: 8
    Dernier message: 29/03/2007, 14h48

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