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 :

Classer les valeurs d'une variable


Sujet :

SAS Base

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    Points : 108
    Points
    108
    Par défaut Classer les valeurs d'une variable
    Bonjour
    J'ai un énorme soucis, dans un tableau sas que j'obtiens à partir d'un cube, j'aimerais faire un classement suivant une variable précise.
    Ma variable s'appelle vente et j'aimerais avoir une colonne supplémentaire qui aura comme valeur 1,2,3, etc...
    Rq. 1,2,3,etc représentera le classement suivant ce chiffre d'affaire..
    C'est peut-être faisable à l'aide d'un proc format mais je suis un peu perdu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Vente   Rang
    12000   1
    7000     3
    10000   2
    etc...

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Salut,

    je pense à une procédure sql qui crée une nouvelle table contenant le rang du CA:

    Etape 1 : table triée par CA décroissant

    Etape 2 : nouvelle table à deux colonnes : le CA et le rang du CA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    PROC SQL;
     CREATE TABLE SASUSER.QUERY_FOR_CA_TRIEE AS 
     SELECT CA.chiffre_aff 
     FROM SASUSER.CHIFFAFF AS CA
     ORDER BY CA.chiffre_aff DESC;
    QUIT;
     
    PROC SQL;
     CREATE TABLE SASUSER.QUERY_FOR_CA AS 
     SELECT CA2.chiffre_aff, monotonic() as rang
     FROM SASUSER.QUERY_FOR_CA_TRIEE AS CA2;
    QUIT;
    A+

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour.
    Tu peux utiliser la proc RANK, elle est exactement faite pour ça. Pour attribuer le rang 1 au maximum, il faut indiquer l'option DESCENDING. La nouvelle variable se donne dans l'instruction RANKS, celle sur laquelle les rangs sont basés, dans VAR. Enfin, il y a une option TIES pour indiquer comment traiter les ex aequos.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROC RANK DATA=sashelp.class OUT=work.class DESCENDING TIES=LOW ;
    	VAR weight ;
    	RANKS rang_poids ;
    RUN ;
    Olivier

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    super cette procédure parce qu'en effet en sql c'est lourd il aurait fallu refaire un update pour les CA ex_aequo

    Juste une question olivier, on dirait que la procédure n'a été étudiée que pour des variables numériques.

    Le confirmez-vous ?

  5. #5
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Oui, à ma connaissance on ne peut traiter que des variables numériques avec la proc Rank.
    Pour les variables de type caractère, il reste les solutions usuelles : trier et gérer des compteurs (en SQL ou en étape Data).

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    OK , merci à vous.

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 233
    Points : 254
    Points
    254
    Par défaut
    Merci khiman pour la fonction monotonic !
    Par contre, j'ai rien trouvé dans la documentation de SAS, et certains blogs sur le net disent qu'il s'agit d'une fonction non documentée au cause des effets "non attendus". As-tu remarqué des bizarreries avec cette fonction ? Quel est son problème ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Salut green,

    je suis analyste informatique et j'essaie d'évoluer sur sas : je débute

    si je vois qqch je vous tiens au courant.

    A+

Discussions similaires

  1. Créations de table selon les valeurs d'une variable
    Par rocsylcanar dans le forum SAS Base
    Réponses: 9
    Dernier message: 27/05/2009, 12h22
  2. macro excel renvoyant toutes les valeurs d'une variable
    Par eclipse012 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/11/2008, 15h41
  3. Mode debug : afficher les valeurs d'une variable
    Par zenux dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 05/04/2008, 12h44
  4. Recuperer les valeurs d'une variable
    Par yoann_deygas dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/06/2007, 11h10
  5. Réponses: 5
    Dernier message: 16/05/2006, 09h23

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