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 :

Remanier un tableau par valeurs [DATA]


Sujet :

SAS Base

  1. #1
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut Remanier un tableau par valeurs
    Bonjour à tous,

    Je cherche à remanier un tableau de données de cette forme



    J'essaye d'afficher toutes les valeurs possibles de VAR_xxx en colonne et de mettre 1 si le produit possède la valeur ou 0 sinon.
    L'objectif est d'obtenir ce tableau de données :



    Auriez vous des idées pour éclairer ma lanterne ?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Bonjour,

    Avec une double proc transpose, ça devrait le faire ...

    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
     
    proc transpose data=matable out=matable;
    by produit;
    var var_101 var_102 var_103;
    run;
     
    data matable (drop=_name_);
    set matable;
    if col1 NE '?';
    valeur = 1;
    run;
     
    proc transpose data=matable out=matable (drop=_name_);
    by produit;
    id col1;
    var valeur;
    run;

  3. #3
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Cela marche parfaitement merci !

    Une autre question :

    Le programme va être construit de sorte que l'utilisateur choisisse un produit et des VAR_xxx et le programme affichera le résultat des 2 proc transpose.

    Exemple : on veut les produits 1 à 6 et les var_101 et var_102.
    Comment dire à SAS de ne garder dans le tableau que les colonnes dont le nom contient _101 ou _102 ?

    De plus, étant donné que dans la proc transpose on doit écrire le nom des colonnes qu'on transpose et que la on ne les connait pas à priori, comment puis-je faire ? Est-ce possible de transposer TOUT sauf la première colonne ?

    Merci pour votre aide


    Merci

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bjr,

    2 petites modifications par rapport au code précédent pour répondre à votre question.

    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
     
    proc transpose DATA=matable out=matable;
    BY produit;
    var var_: ;
    run;
     
    DATA matable (DROP=_name_);
    SET matable;
    where _NAME_ like '%_101' or _NAME_ like '%_102' ;
    IF col1 NE '?';
    valeur = 1;
    run;
     
    proc transpose DATA=matable out=matable (DROP=_name_);
    BY produit;
    id col1;
    var valeur;
    run;
    bon coruage

  5. #5
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Un grand merci à vous.

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

Discussions similaires

  1. [XL-2003] TCD - Générer un tableau par valeur du filtre
    Par nawakbling dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/09/2011, 13h00
  2. Réponses: 7
    Dernier message: 29/01/2009, 13h32
  3. [Tableaux] Tableau: trier par valeurs identiques
    Par renaud26 dans le forum Langage
    Réponses: 2
    Dernier message: 25/12/2007, 11h06
  4. passer un tableau d'entier par valeurs à une fonction
    Par piotrr dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 18/12/2007, 02h16
  5. Recherche valeurs dans tableau par Vlookup
    Par fabibou dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/08/2007, 12h51

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