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
    Stagiaire de recherche
    Inscrit en
    mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Stagiaire de recherche

    Informations forums :
    Inscription : mai 2019
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Supprimer doublons et additionner/fusionner lignes pour garder une seule variable

    Bonjour,

    Je me permet de venir vers vous car je suis bloqué sur le logiciel SAS pour une manipulation qui me torture les neurones depuis plusieurs jours!

    Je dois travailler une base de données sur des organismes LGBT avec leur catégorie et la clientèle. Ainsi, pour chaque catégorie et clientèle, j'ai indiqué que si oui=1 si non =0.

    Pour vous remettre le contexte:

    Base de données de base (c'est confidentiel, les données sont donc inventées):

    APPELLATION ADRESSE CODE POSTAL RESSOURCE CLIENTELE
    123 Rue des fleurs H1X2S3 Communautaire Gais
    123 Rue des fleurs H1X2S3 Communautaire Lesbiennes
    123 Rue des fleurs H1X2S3 Defense des droits Bisexuels
    125 Rue des tours H2X2S4 Bars Alliés
    125 Rue des tours H2X2S4 Bars Tout le monde
    126 Rue des ponts H1X2D7 Commerces Tout le monde
    127 Rue des mimes H1X3H4 Divers Gais
    128 Rue des tracteurs H8H5D2 Organisme Bisexuels
    128 Rue des tracteurs H8H5D2 Rencontre Gais
    129 Rue des cyclones H4X2S8 Hébergement Lesbiennes

    En faisant une première modif j'ai donc fait cela:

    APPELLATION ADRESSE CODE POSTAL COMMU DEFDROI BAR COMME DIV ORGA RENC HEBER BI GAI LESB ALLIE TOUS
    123 Rue des fleurs H1X2S3 1 0 0 0 0 0 0 0 0 1 0 0 0
    123 Rue des fleurs H1X2S3 1 0 0 0 0 0 0 0 0 0 1 0 0
    123 Rue des fleurs H1X2S3 0 1 0 0 0 0 0 0 1 0 0 0 0
    125 Rue des tours H2X2S4 0 0 1 0 0 0 0 0 0 0 0 1 0
    125 Rue des tours H2X2S4 0 0 1 0 0 0 0 0 0 0 0 0 1
    126 Rue des ponts H1X2D7 0 0 0 1 0 0 0 0 0 0 0 0 1
    127 Rue des mimes H1X3H4 0 0 0 0 1 0 0 0 0 1 0 0 0
    128 Rue des tracteurs H8H5D2 0 0 0 0 0 1 0 0 1 0 0 0 0
    128 Rue des tracteurs H8H5D2 0 0 0 0 0 0 1 0 0 1 0 0 0
    129 Rue des cyclones H4X2S8 0 0 0 0 0 0 0 1 0 0 1 0 0

    J'aimerais qu'au final, cela donne ce rendu (dans la vraie base, j'ai près de 8600 lignes et 27 colonnes):

    APPELLATION ADRESSE CODE POSTAL COMMU DEFDROI BAR COMME DIV ORGA RENC HEBER BI GAI LESB ALLIE TOUS
    123 Rue des fleurs H1X2S3 1 1 0 0 0 0 0 0 1 1 1 0 0
    125 Rue des tours H2X2S4 0 0 1 0 0 0 0 0 0 0 0 1 1
    126 Rue des ponts H1X2D7 0 0 0 1 0 0 0 0 0 0 0 0 1
    127 Rue des mimes H1X3H4 0 0 0 0 1 0 0 0 0 1 0 0 0
    128 Rue des tracteurs H8H5D2 0 0 0 0 0 1 1 0 1 1 0 0 0
    129 Rue des cyclones H4X2S8 0 0 0 0 0 0 0 1 0 0 1 0 0

    En résumé, que les doublons soit supprimés mais que les données soient fusionnées ou additionnées.

    Quelqu'un peut-il m'aidé?

    Je débute sur SAS et j'ai essayé SQL, TRANSPOSE, mais ne sachant pas quelle commande je dois donner, il est difficile pour moi d'avancer dans le traitement de ma base.

    Merci par avance!

    PS/ Désolé si je ne suis pas dans le bon salon!

  2. #2
    Membre éprouvé
    Inscrit en
    novembre 2009
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 457
    Points : 906
    Points
    906

    Par défaut proc univariate

    Bonjour,

    Vous pouvez utiliser la proc univariate avec la fonction sum ou la fonction max :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc univariate data=test noprint;
      by appellation adresse code_postal;
      var commu defdroi bar comme div orga renc heber bi gai lesb allie tous;
      output out=output max=commu defdroi bar comme div orga renc heber bi gai lesb allie tous;
    run;
    Vous pouvez automatiser le programme en créant une macro-variable contenant la liste des variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    proc contents data=test out=listvar noprint;
    run;
     
    proc sql noprint; 
      select name
        into: listvar separated by " "
        from listvar
        where varnum > 3
        order by varnum;
     
    %put &listvar;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc univariate data=test noprint;
      by appellation adresse code_postal;
      var &listvar;
      output out=output2 max=&listvar;
    run;
    Cordialement,

  3. #3
    Candidat au Club
    Homme Profil pro
    Stagiaire de recherche
    Inscrit en
    mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Stagiaire de recherche

    Informations forums :
    Inscription : mai 2019
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Merci!

    Bonsoir!

    Merci beaucoup de votre implication!

    Je vais essayer de procéder et reviens vers vous pour vous tenir au courant!

    Merci beaucoup!

  4. #4
    Candidat au Club
    Homme Profil pro
    Stagiaire de recherche
    Inscrit en
    mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Stagiaire de recherche

    Informations forums :
    Inscription : mai 2019
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Je dois mal faire quelque chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc univariate data=WORK.IMPORT noprint;
      by NAME ADRS CP;
      var COMRS COMU DEF_DR DIV HEB LOIS MEDI ORG PUB RELI RENC REST SA_PHY SA_PSY SAUN SER_JUFI ALLIES BIS GAI LESB TOUT TRANS ;
      output out=WORK.RESLGBT max= COMRS COMU DEF_DR DIV HEB LOIS MEDI ORG PUB RELI RENC REST SA_PHY SA_PSY SAUN SER_JUFI ALLIES BIS GAI LESB TOUT TRANS;;
    run;
    Nom : Capture.PNG
Affichages : 49
Taille : 70,7 Ko

  5. #5
    Membre éprouvé
    Inscrit en
    novembre 2009
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 457
    Points : 906
    Points
    906

    Par défaut proc univariate

    Bonjour,

    Il est probable que vos variables soient alphanumériques. Il faut qu'elles soient numériques pour appliquer les fonctions statistiques.

    Cordialement,

  6. #6
    Candidat au Club
    Homme Profil pro
    Stagiaire de recherche
    Inscrit en
    mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Stagiaire de recherche

    Informations forums :
    Inscription : mai 2019
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Merci!

    Citation Envoyé par mgdondon Voir le message
    Bonjour,

    Il est probable que vos variables soient alphanumériques. Il faut qu'elles soient numériques pour appliquer les fonctions statistiques.

    Cordialement,
    Bonjour mgdondon!

    J'ai enfin réussi! Merci beaucoup de votre aide. J'ai converti mes données. Après ça bloquait car j'ai du remplacer "by" par "class".

    Encore merci!

    Bonne journée!

  7. #7
    Membre éprouvé
    Inscrit en
    novembre 2009
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 457
    Points : 906
    Points
    906

    Par défaut proc univariate

    Bonjour,

    Citation Envoyé par MouchouQC Voir le message
    J'ai enfin réussi ! Merci beaucoup de votre aide. J'ai converti mes données. Après ça bloquait et j'ai dû remplacer "by" par "class".
    L'instruction by nécessite que les observations soient préalablement triées.

    Cordialement,

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/03/2019, 18h44
  2. Comment lire une ligne pour prendre une donnée recherchée ?
    Par MangoZaz dans le forum Développement de jobs
    Réponses: 16
    Dernier message: 30/10/2015, 12h16
  3. Réponses: 2
    Dernier message: 11/03/2013, 18h24
  4. Réponses: 2
    Dernier message: 08/03/2010, 17h33

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