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 :

Suppression lignes selon modalité


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Suppression lignes selon modalité
    Bonjour,

    Voici mon ex :

    var1 var2
    a 2
    a 3
    a 4
    a 2
    b 1
    b 2
    b 2
    b 1

    Je souhaite supprimer toutes les lignes du groupe (a ou b) en var1 si il y a seulement une valeur de var2 dépassant 3.
    Dans l'exemple, je veux que soit supprimer toutes les lignes avec a, car dans ce groupe, il y a une valeur dépassant 3.

    Merci de votre aide

  2. #2
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    en calculant le max de var2 par var 1 tu peux savoir si tu peux conserver un groupe ou pas.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    En code ça donne quoi ?

    Merci

  4. #4
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,
    Je te propose cette solution
    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
    data test ;
    input var1 $ var2;
    cards;
    a 2
    a 3
    a 4
    a 2
    b 1
    b 2
    b 2
    b 1
    c 1
    c 4
    e 2
    e 1
    e 1
    ; 
    run;
    proc sort data=test; by var1 var2; run;
     
    data test1 ;
    set test;
    by var1 var2;
    if last.var2 and var2>3 then output;
    run;
    proc sql ;
         DELETE FROM work.test 
              WHERE var1 IN (SELECT var1 FROM test1)
              ;
    QUIT ;
    Cordialement

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    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 : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Tu peux également utiliser ce code :
    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
     
    data initiale ;
    input var1 $ var2 ;
    cards ;
    a 1
    a 3
    a 4
    a 2
    b 1
    b 2
    b 2
    b 1
    ; run ;
     
    proc sort data=initiale ; by var1 ; run ;
     
    data finale  (drop=code ) ;
    Do Until ( LAST.var1 ) ;
    set initiale ;    by var1 ;  
    retain code  ;
    if first.var1 then code=1 ;		
    if var2 > 3   then code=0 ;	    
    End ;  
     
    Do Until ( LAST.var1 ) ;
    set initiale ;
    by var1 ;  	 
    if code=1 then output ;
    End ; 
    run;
    Cdt Ward

  6. #6
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Egalement comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    proc sql;
    create table fin as select t1.*  
    from debut as t1 group by var1 having max(t1.var2) <3  
    ;
    quit;

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup de vos réponses, cela m'a débloqué !

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

Discussions similaires

  1. [Débutant] Suppression de lignes selon condition
    Par Bubulle31 dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/08/2011, 16h58
  2. Suppression lignes identiques selon critères
    Par stsym dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 08/06/2011, 05h37
  3. [XL-2003] Suppression lignes selon colonne de 2 sheets
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2011, 16h54
  4. [XL-2003] Suppression lignes selon 1 condition
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 28/01/2011, 21h18
  5. Suppression d'un ligne selon un paramètre VRAI/FAUX
    Par geygey881 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/05/2010, 22h44

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