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 :

supprimer des lignes dans une table SAS


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut supprimer des lignes dans une table SAS
    Bonjour, je débute tout juste sous SAS, et je n'arrive pas à trouver comment supprimer certaines lignes dans une table SAS.
    En fait, je voudrais supprimer les lignes d'une table pour lesquelles deux variables sont identiques à une autre table.
    Exemple :

    table 1
    var_1 var_2 var_3
    oui 12 15 ans ligne 1
    oui 15 20 ans ligne 2
    non 16 35 ans ligne 3


    table 2
    var_1bis var_2bis
    oui 13
    non 16
    oui 17


    Du coup, je voudrais garder uniquement les lignes 1 et 2 de la table 1.
    Est-ce que c'est possible?

    Merci d'avance.

  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
    bonjour,
    je ne voie pas bien la distinction ( debut et fin) des variables de la tables 1,
    sinon tu fais une data merge. et une condition if var1( de table1) ne(var1!!var2) tables2;
    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 chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    La suppression de lignes se fait par la commande delete.

    Reste à bien coder les conditions de suppression. Il faut que tu rassemble tes deux jeux de données dans un seul par des clés de jointure, en précisant d'ou vient chaque données. Si une clé est présente dans les deux , alors on supprime la ligne. Dans l'idée c'est ca, il y aura peut être qq modfis a apporter (j'ai pas testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data supprlignes;
    merge tab1(in=A) tab2(in=B rename=(var_1bis=var_1 var_2bis= var_2);
    if A;
    if A and B then delete;
    run;
    ou encore mieux


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data supprlignes;
    merge tab1(in=A) tab2(in=B rename=(var_1bis=var_1 var_2bis= var_2);
    if A and not B;
    run;

  4. #4
    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
    @manoutz, je crois qu'il faut qu'on rajoute un By la variable de comparaison.
    car comme le merge in est te type booleen (0 ou 1) donc il va comparer toutes les variables?
    et surtout une proc sort avant.
    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

  5. #5
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    oups! Effectivemment il faut ajouter un by. merci sam (et ca m'apprendra a pas tester!)

    le by permet effectivement d'identifier les clés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DATA supprlignes;
    merge tab1(IN=A) tab2(IN=B RENAME=(var_1bis=var_1 var_2bis= var_2);
    IF A;
    IF A AND B then DELETE;
    by var_1 var_2;
    run;
     
    DATA supprlignes;
    merge tab1(IN=A) tab2(IN=B RENAME=(var_1bis=var_1 var_2bis= var_2);
    IF A AND NOT B;
    by var_1 var_2;
    run;

  6. #6
    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
    alors, j'ai fais un jeu de données mais je ne suis pas si sûr que se soit le même que celui de yoyo44ima. Mais bon si tu débute en SAS alors inspire toi et révises tes cours. et si tu veux savoir plus sur le merge ( fusion virticale) il y a pas mal de PDF en Français.

    inspires toi de ce petit programme, de débutant
    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
    39
    40
    41
     
     
     
     
     
     
    data table1;
    input var_1 $ 1-6   var_2 $ 8-14  var_3 $ 15-22;
    cards;
    oui 12 15 ans ligne 1
    oui 15 20 ans ligne 2
    non 16 35 ans ligne 3
    ;
    run;
     
     
    data table2;
     
    input var_1bis $ 1-6   ;
    cards;
    oui 13
    non 16
    oui 17
    ;
    run;
     
     
    proc sort data=table1; 
    by var_1;
    run;
     
    proc sort data=table2; 
    by var_1bis;
    run;
     
     
    data finale;
    merge table1 (in=a) table2 (in=b RENAME=(var_1bis=var_1 ));
    by var_1;
    if a and not b;
    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

  7. #7
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    il faut merger (je pense si ma compréhension est bonne) par Var_1 var_2. Var_1 n'a que deux (ou peu de) catégories donc si on ne merge que sur cette variable ca va réduire considérablement le nombre de lignes.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci à tous les deux, vous m'avez été d'une grande aide.
    J'ai utilisé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DATA supprlignes;
    merge tab1(IN=A) tab2(IN=B RENAME=(var_1bis=var_1 var_2bis= var_2);
    IF A;
    IF A AND B then DELETE;
    BY var_1 var_2;
    run;

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

Discussions similaires

  1. Supprimer des lignes dans une table
    Par ToniConti dans le forum Pentaho
    Réponses: 5
    Dernier message: 03/08/2010, 23h09
  2. la couleur des lignes dans une table
    Par Platon93 dans le forum Access
    Réponses: 3
    Dernier message: 30/11/2006, 15h05
  3. [VBA] Supprimer des lignes dans une table
    Par shadockgreg dans le forum Access
    Réponses: 6
    Dernier message: 22/11/2006, 09h58
  4. Réponses: 14
    Dernier message: 22/09/2005, 16h49
  5. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50

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