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 STAT Discussion :

Calcul proc means


Sujet :

SAS STAT

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Calcul proc means
    Bonjour,

    j'ai calculé la moyenne d'une variable "age" à l'aide de la proc means. Mais je voudrais multiplié cet age moyen par 12. Peut on faire cela dans un proc means?

    Merci

  2. #2
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Le plus simple est sans doute de passer par du SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    proc sql;
        select mean(age)*12
        from ta_table;
    quit;
    Avant de poser votre question, n'oubliez pas :
    FAQ, SAS DOC et de ce forum

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    J'avais pensé à ça aussi.
    Mais je voudrais une solution générale c'est à dire pour un grand nombre de variable...

    Si on avait 20 variables, on ne va pas faire:
    select mean(Var1)*12,...,mean(Var20)*12

    C'est pour ça je demande si on peut le faire directement par la proc means ...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 249
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Je ne vois pas de solution directe avec la proc means mais si le code à taper te rebute, la solution de Steel plus du macro-langage me paraît une alternative intéressante !

    Le macro-pogramme "mp_means" utilise trois macro-variables :

    1. mv_times : coefficient multiplicateur
    2. mv_table : nom de la table en entrée
    3. mv_vars : variables de mv_table à traiter


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %macro mp_means (mv_times=12, mv_table=sashelp.shoes, mv_vars=sales returns) ;
         proc sql ;
              select mean(%scan(&mv_vars,1))*&mv_times
              %DO i = 2 %to 1 + %sysfunc(countc(&mv_vars," ")) ;
                   , mean(%scan(&mv_vars,&i))*&mv_times
              %END ;
              from &mv_table
              ;
         quit ;
    /* Test : %mp_means ; */
    %mend mp_means ;
    Bon courage !

Discussions similaires

  1. Calculs sur des modalités dans une proc means
    Par mohamed_ dans le forum SAS Base
    Réponses: 1
    Dernier message: 23/11/2012, 11h01
  2. PROC MEANS et format
    Par SAS_ERIC dans le forum SAS STAT
    Réponses: 2
    Dernier message: 01/05/2009, 23h04
  3. Exportation proc means
    Par perloch dans le forum SAS Base
    Réponses: 2
    Dernier message: 16/01/2009, 15h30
  4. Utilisation de la proc means par groupe
    Par stefsas dans le forum SAS STAT
    Réponses: 3
    Dernier message: 08/09/2008, 16h25
  5. boucle avec proc means
    Par nawal59 dans le forum Macro
    Réponses: 4
    Dernier message: 01/07/2008, 22h18

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