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 :

Appliquer un format à une variable numérique avec modalités sans formats


Sujet :

SAS Base

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 40
    Points
    40
    Par défaut Appliquer un format à une variable numérique avec modalités sans formats
    Bonjour,

    Je souhaite appliquer un format à une variable numérique (je ne souhaite pas utiliser de PROC SQL car mes tables sont très lourdes, et les formats sont plus performants dans mon cas de figure)
    Mais pour certaines modalités, je n'ai pas de format. Je souhaiterais donc que la variable (variable FAMILLE dans mon exemple) soit vide.
    Comment est-ce possible de faire ça ?

    Voici mon code exemple :

    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
    DATA HISTO;
    	INPUT ID_CLIENT ID_ART VOL;
    	CARDS;
    1 1 10
    1 2 15
    1 3 12
    1 4 20
    2 1 2
    2 2 6
    2 3 10
    2 5 25
    ;
    RUN;
     
    DATA ARTICLES;
    	INPUT PRODUIT FAMILLE $;
    	CARDS;
    1 EAU
    2 BIERE
    3 SOFT
    5 JUS
    ;
    RUN;
     
    DATA FMT;
    	RETAIN FMTNAME 'FMT_FAMILLE' TYPE 'N';
    	SET ARTICLES (RENAME = (PRODUIT = START FAMILLE = LABEL));
    RUN;
     
    PROC FORMAT CNTLIN = FMT;
    RUN;
     
    DATA HISTO2;
    	SET HISTO;
    	FAMILLE = STRIP(PUTN(ID_ART,'FMT_FAMILLE.'));
    RUN;
    Merci de votre aide,

    delph_le

  2. #2
    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,

    Il faut utiliser la modalité OTHER du proc format.
    Mais dans ton exemple, tu utilises une table pour créer ton format. donc il faut créer une variable HLO qui permet de "signaler" la modalité " " (vide) pour les autres formats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DATA FMT;
    	RETAIN FMTNAME 'FMT_FAMILLE' TYPE 'N';
    	SET ARTICLES (RENAME = (PRODUIT = START FAMILLE = LABEL)) end = fin ;
    output;
    if fin then do;
    hlo = "O"; label = " ";
    output;
    end;
    RUN;
    Cordialement,

    Rom

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup, ça fonctionne très bien, c'est exactement ce que je voulais faire.

    delph_le

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/05/2014, 09h07
  2. Réponses: 0
    Dernier message: 21/05/2014, 17h08
  3. Réponses: 10
    Dernier message: 13/05/2014, 17h06
  4. [DATA] Remplir valeur d'une variable numérique avec des If
    Par Oreo_ dans le forum SAS Base
    Réponses: 2
    Dernier message: 17/06/2013, 13h46
  5. Formater un champ numérique avec une virgule
    Par hammag dans le forum SQL
    Réponses: 2
    Dernier message: 22/08/2011, 09h57

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