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 :

Retenir une modalité en fonction d'autres variables


Sujet :

SAS Base

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Rédacteur technique
    Inscrit en
    Février 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Retenir une modalité en fonction d'autres variables
    bonjour à tous,
    (c'est mon tout premier post sur developpez.com donc merci pour votre indulgence.)

    j'ai besoin d'aide pour coder le problème suivant à partir du dataset suivant :
    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
    data t; 
     
    input id$ cod$ freq1 freq2 freq3 ;
     
    datalines;
     
    h55 aa 10 10 1
     
    h56 mm 10 12 2
     
    h56 gg 9 8 5
     
    h57 gg 5 0 5
     
    h57 ll 5 1 6
     
    h57 mm 5 0 7
     
    h58 ll 0 0 2
     
    h58 ff 0 0 3
     
    h58 aa 0 0 5
     
    h59 mm 0 0 0 
     
    h59 ff 0 0 0
     
    ; 
     
    run;
    j'ai besoin de récupérer la valeur de COD pour chaque ID

    la valeur doit correspondre au max de FREQ1 pour chaque ID;

    s'il y a plusieurs lignes par ID, et qu'il y a un ex-aequo sur FREQ1, basculer sur FREQ2; garder le max,

    même principe, si ex-aequo, basculer sur FREQ3 pour comparer et si pas possible de départager avec FREQ3, COD="00".

    en clair je souhaiterais trouver

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    h55 aa
     
    h56 mm
     
    h57 ll
     
    h58 aa
     
    h59 00
    je ne sais pas si c'est suffisamment clair,

    merci par avance pour votre aide joyeux Sasseurs,
    ac

  2. #2
    Membre actif
    Homme Profil pro
    Analyste - Information médicale
    Inscrit en
    Mars 2012
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste - Information médicale
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 72
    Points : 255
    Points
    255
    Par défaut
    Bonjour,

    j'ai fait un peu vite, j'espère que mes explications seront claires.
    Le plus important n'étant pas de copier le programme mais de le comprendre

    Bon courage,

    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
    * je crée une clé avec tes trois variables freq de façon à les ranger directement dans l'ordre Max(freq1) puis Max(freq2) puis Max(freq3);
    * la variable clé devra être mmodifiée en fonction de tes valeurs de freq (si freq peut aller jusqu'à 10 000 alors ajouter des 0);
    * la variable nb compte le nombre d occurences différentes de chaque clé;
    proc sql;
    create table test as
    select t.* , freq1*1000000+freq2*1000+freq3 as cle , count(*) as nb
    from t
    group by id , cle
    order by id , cle desc;
    quit;
     
    * seule la première ligne de la table précédente nous intéresse;
    * sinon une seule occurence : c est celle que l on cherche, sinon il y en a plusieurs et on retient donc "00";
    data test2 (keep=id cod);
    set test;
    by id;
    if first.id then do;
    	if nb>1 then cod='00';
    	output;
    end;
    run;

Discussions similaires

  1. [MySQL] INSERT sur une table en fonction d'autres INSERT
    Par kabkab dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 23/05/2014, 11h48
  2. [Batch] Lancement d"une commande en fonction de la variable TargetPC
    Par fulltipe dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 21/05/2014, 01h34
  3. [AC-2007] Calculer une date en fonction entre autre de case à cocher
    Par ouanou29 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/01/2013, 20h23
  4. Réponses: 4
    Dernier message: 08/12/2009, 19h35
  5. somme de valeurs d'une colonne en fonction d'autres colonnes
    Par youness78 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/08/2007, 19h31

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