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 :

Décalage des informations dans plusieurs colonnes


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Femme Profil pro
    Data manager
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Data manager
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Décalage des informations dans plusieurs colonnes
    Bonjour,

    Je suis nouvelle sur ce forum et j'ai un soucis

    J'ai 475 fichiers XLS importés sous sas et concaténés ce qui fait une grosse table sauf que dedans j'ai une colonne compte rendu qui contient des informations séparées par des #.

    J'ai réussi à éclater cette colonne compte rendu selon les # ce qui m'a permis d'avoir plus de 300 colonnes mais il y a un décalage dedans que j'aimerai corriger.

    Dans une des colonnes par exemple je dois avoir que les informations sur la marge pour l'ensemble des lignes sinon un vide mais je me retrouve avec d'autres informations.

    [B]Est ce que quelqu'un sait comment résoudre ce problème de décalage et l'automatiser (macro) sachant que j'ai une base de 1 millions de lignes et 300 colonnes.

    une capture d'écran du fichier avec les lignes sur lesquels je dois insérer un vide dans certains champs et à décaler en vert.

    Je vous remercie pour votre aide.Nom : Capture.PNG
Affichages : 524
Taille : 86,4 Ko

  2. #2
    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
    data test;
    input var1 $ var2 $ var3 $ var4 $ var5 $;
    cards;
    1 2 dcont hconta .
    2 2 3 dcont hconta 
    ; run;
     
    data test11 test22;
    set test;
    if index(var3,"dcont")=1 then output test11;
    else output test22; 
    run;
     
     
    data test1(drop=i);
    set test11;
    array cols _all_;
    do i =dim(cols)-1 to 3 by -1; 
    cols(i+1)=cols(i);
    end;
    var3="";
    run;
     
    data fin;
    set test1 test22;
    run;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  3. #3
    Membre à l'essai
    Femme Profil pro
    Data manager
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Data manager
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Je te remercie

    ça fonctionne je vais abuser un peu vu que dans ton mon fichier de 1 millions de lignes, la variable n14 peut prendre beaucoup de modalités par exemple plus de 20 ce sera impossible de créer autant de tables que de variables.

    Comment est ce que je pourrais le faire automatiquement


    Cordialement,

  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
    Si dans cette colonne (n14), les valeurs qu'elle doit contenir sont sous cette forme "marge=????", la solution est comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    data test;
    infile cards dsd dlm=' ';
    input var1 $ var2 $ var3 $ var4 $ var5 $;
    cards;
    1 2 dcont hconta .
    2 2 marge=M dcont hconta 
    3 2 marge=N dcont hconta 
    ; run;
     
    data test11 test22;
    set test;
    if index(var3,"marge=") = 0 then output test11;
    else output test22; 
    run;
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  5. #5
    Membre à l'essai
    Femme Profil pro
    Data manager
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Data manager
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    en appliquant le code sur mon fichier l'option ne fonctionne que si toutes les variables sont de types caractères ou numériques

    Citation Envoyé par m.brahim Voir le message
    ce que je veux dire c'est que dans la colonne n14 tu peux avoir
    marge=N
    marge=M
    Dcontact
    secure
    Cui
    Cequip
    Nd=

    C'est à dire plusieurs modalités

  6. #6
    Membre à l'essai
    Femme Profil pro
    Data manager
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Data manager
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par LIFATOUCH Voir le message
    en appliquant le code sur mon fichier l'option ne fonctionne que si toutes les variables sont de types caractères ou numériques
    problème avec array résolu reste l'automatisation du code sur 300 variables

  7. #7
    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
    en appliquant le code sur mon fichier l'option ne fonctionne que si toutes les variables sont de types caractères ou numériques
    En effet, pour que le code fonctionne correctement, il faut que toutes les variables soient du même type.
    A mon niveau, je ne vois que cette solution à te proposer.
    Pour continuer sur la même logique, je te propose:
    1. Importer toutes les données sous format caractère.
    2. convertir les variables qui ont besoin.

    marge=N
    marge=M
    Dcontact
    secure
    Cui
    Cequip
    Nd=
    La colonne n14 doit contenir d'après ton premier message
    Dans une des colonnes par exemple je dois avoir que les informations sur la marge pour l'ensemble des lignes sinon un vide mais je me retrouve avec d'autres informations.
    des informations sur marge; le reste doit être décalé.
    En prenant la dernière solution proposée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data test11 test22;
    set test;
    if index(var3,"marge=") = 0 then output test11;
    else output test22; 
    run;
    la table résultats test11 ne contient aucune information sur la marge et c'est bien ces données qui seront traitées dans cette étape:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    data test1(drop=i);
    set test11;
    array cols _all_;
    do i =dim(cols)-1 to 3 by -1; 
    cols(i+1)=cols(i);
    end;
    var3="";
    run;
    Est-ce bien la demande?
    Merci
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  8. #8
    Membre à l'essai
    Femme Profil pro
    Data manager
    Inscrit en
    Mars 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Data manager
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2019
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Oui effectivement ça fonctionne bien j'essaye de l'automatiser vu le nombre de variables et de lignes que j'ai afin de supprimer certaines tables après utilisation

    Je vous remercie pour l'aide

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

Discussions similaires

  1. [XL-2010] Macro pour rechercher des informations dans plusieurs feuilles et créer une liste
    Par bastienbenet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/03/2016, 09h57
  2. [XL-2010] Copier des informations dans plusieurs cellules
    Par comefs dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2015, 14h16
  3. [XL-2010] Fusionner des doublons dans plusieurs colonnes
    Par JambonBlanc01 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2013, 09h44
  4. [XL-2003] Dénombrer des occurrences dans plusieurs colonnes
    Par mandela9857 dans le forum Excel
    Réponses: 3
    Dernier message: 18/02/2013, 19h38
  5. Réponses: 17
    Dernier message: 01/12/2008, 10h52

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