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
    Membre à l'essai
    Faire une somme d'une variable sur des observations "presque-identiques"
    Bonjour,
    Svp j'ai besoin de votre aide. En fait, dans ma table j'ai souvent des observations identiques pour 4 variables mais qui ont des valeurs différentes sur la 5è variable.
    Si je fais un tri dans une proc sort avec nodupkey, je perds une ligne ayant une information importante (dans la 5è variable). J'ai donc besoin de regrouper les identifiants concernés (ayant les valeurs identiques sur les 4 variables var1 var2 var3 et var4) en faisant une somme sur la variable 5. De ce procédé, je récupère toutes les informations sur la 5è variable et je pourrais trier après en utilisant les 4 variables (var1 var2 var3 et var4).
    Pour voir clair, je mets en bas ma table de départ (aide) et les deux tables que je souhaite obtenir (aide_resultat1 ou bien aide_resultat2). Suivant les possibilités, l'une des deux tables est suffisante pour moi. Je vous remercie beaucoup pour l'aide!

    Table de départ:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Data aide;
    input identifiant var1$ var2$ var3$ var4$ var5;
    cards;
    150054319 H N B1 B1 8.59
    150054319 H N B1 B1 0
    201905302 B N B1 B1 51.76
    201905302 B N B1 B1 10
    201928116 B N B1 B1 8.59
    201964554 B N B1 B1 9.88
    201985365 H N B1 B1 5
    ;run;


    L'une des 2 tables que je souhaite obtenir:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Data aide_resultat1;
    input identifiant var1$ var2$ var3$ var4$ var5 var6;
    cards;
    150054319 H N B1 B1 8.59 8.59
    150054319 H N B1 B1 0 8.59
    201905302 B N B1 B1 51.76 61.76
    201905302 B N B1 B1 10 61.76
    201928116 B N B1 B1 8.59 8.59
    201964554 B N B1 B1 9.88 9.88
    201985365 H N B1 B1 5 5
    ;run;


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Data aide_resultat2;
    input identifiant var1$ var2$ var3$ var4$ var5;
    cards;
    150054319 H N B1 B1 8.59
    201905302 B N B1 B1 61.76
    201928116 B N B1 B1 8.59
    201964554 B N B1 B1 9.88
    201985365 H N B1 B1 5
    ;run;

  2. #2
    Membre à l'essai
    Je viens de trouver un code qui donne l'une des deux tables que je voulais.
    Je vous remercie!

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    proc sql;
    create table aide1 as
    select *,
    	CASE 
    		WHEN count(distinct var5)>1 then sum(var5)
    		ELSE var5
    		END as SOMME_var5
    from aide
    group by identifiant
    ;
    quit;

###raw>template_hook.ano_emploi###