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 :

Somme de variables sur centiles


Sujet :

SAS Base

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 34
    Par défaut Somme de variables sur centiles
    Bonsoir,

    J'ai un soucis avec un code étant celui-ci :

    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
     
    proc means data=rentastock minimum P1 P5 P10 P25 median P75 P90 P95 P99 maximum; 
    var PRODUCTION; 
     
    data rentastock;
    set rentastock;
    if PRODUCTION => minimum and PRODUCTION <= P1
    	then CAT='1er centile';
    if PRODUCTION => P1 and PRODUCTION <= P5
    	then CAT='5e centile';
    if PRODUCTION => P5 and PRODUCTION <= P10
    	then CAT='10e centile';
    if PRODUCTION => P10 and PRODUCTION <= P25
    	then CAT='25e centile';
    if PRODUCTION => P25 and PRODUCTION <= mean
    	then CAT='2e quartile';
    if PRODUCTION => mean and PRODUCTION <= P75
    	then CAT='3e quartile';
    if PRODUCTION => P75 and PRODUCTION <= P90
    	then CAT='90e centile';
    if PRODUCTION => P90 and PRODUCTION <= P95
    	then CAT='95e centile';
    if PRODUCTION => P95 and PRODUCTION <= P99
    	then CAT='99e centile';
    if PRODUCTION => P99 and PRODUCTION <= maximum
    	then CAT='dernier centile';
    run;
     
    proc means data=rentastock sum; 
    var PRODUCTION; 
    class CAT;
    run;
    En fait je souhaite fait la somme de la variable Production mais en créant des classes qui sont en fait définies par des centiles: min P1 P5 P10 P25 mean P75 P90 P95 P99 max. Donc je crée les centiles avec une proc means ensuite je forme les groupes voulus et enfin je refais une somme sur ces mêmes catégories;;;
    Seulement, en exécutant le code montré ci-dessus SAS m'affiche le message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Variable P1 non initialisée
    Variable P5 non initialisée
    (ainsi de suite)
    Any suggestion? je prends tout!

    Merci!

    Bonne soirée

    REMI

  2. #2
    Membre Expert
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Par défaut
    C'est pas aussi simple que ça Remi, voici comment tu dois procéder:


    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
    proc means DATA=sashelp.class  ; 
    var weight; 
    output out =rentastock(drop=_type_ _freq_)P1 =p1 P5=P5 P10=P10 P25=P25 median=Median P75=P75 P90=P90 P95=P95 P99=P99 min=minimum max=maximum;
    run;
     
    DATA _null_;
    SET rentastock;
    call symput("P1",P1);
    call symput("P5",P5);
    call symput("P10",P10);
    call symput("P25",P25);
    call symput("Median",Median);
    call symput("P75",P75);
    call symput("P90",P90);
    call symput("P95",P95);
    call symput("P99",P99);
    call symput("Minimum",Minimum);
    call symput("Maximum",Maximum);
    run; 
     
     
    DATA stat;
    SET sashelp.class;
    IF Weight => &minimum AND Weight <= &P1
    then CAT='1er centile';
    RUN;

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 34
    Par défaut merci
    Je te remercie.

    Mais où se fait la somme sur chaque classe de centile/médiane?

    remi

  4. #4
    Membre Expert
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Par défaut
    Il suffisait de finir le recodage de ta variable CAT que j'ai commencé puis appliquer la proc means sur cette table.
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    proc means DATA=rentastock ; 
    var weight; 
    output out =rentastock(DROP=_type_ _freq_)
    P1 =p1 P5=P5 P10=P10 P25=P25 median=Median P75=P75 P90=P90 P95=P95 P99=P99 min=minimum max=maximum mean=mean;
    run;
     
    DATA _null_;
    SET rentastock;
    call symput("P1",P1);
    call symput("P5",P5);
    call symput("P10",P10);
    call symput("P25",P25);
    call symput("Median",Median);
    call symput("P75",P75);
    call symput("P90",P90);
    call symput("P95",P95);
    call symput("P99",P99);
    call symput("Minimum",Minimum);
    call symput("Maximum",Maximum);
    call symput("Mean",Mean);
    run; 
     
    DATA rentastock;
    SET rentastock;
    IF PRODUCTION => &minimum AND PRODUCTION <= &P1
    	then CAT='1er centile';
    IF PRODUCTION => &P1 AND PRODUCTION <= &P5
    	then CAT='5e centile';
    IF PRODUCTION => &P5 AND PRODUCTION <= &P10
    	then CAT='10e centile';
    IF PRODUCTION => &P10 AND PRODUCTION <= &P25
    	then CAT='25e centile';
    IF PRODUCTION => &P25 AND PRODUCTION <= &mean
    	then CAT='2e quartile';
    IF PRODUCTION => &mean AND PRODUCTION <= &P75
    	then CAT='3e quartile';
    IF PRODUCTION => &P75 AND PRODUCTION <= &P90
    	then CAT='90e centile';
    IF PRODUCTION => &P90 AND PRODUCTION <= &P95
    	then CAT='95e centile';
    IF PRODUCTION => &P95 AND PRODUCTION <= &P99
    	then CAT='99e centile';
    IF PRODUCTION => &P99 AND PRODUCTION <= &maximum
    	then CAT='dernier centile';
    run;
     
     
     
    proc means DATA=rentastock  ; 
    var PRODUCTION; 
    class CAT;
    output out =rentastock_sortie(DROP=_type_ _freq_) sum=;
    run;

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 34
    Par défaut solution
    Bonjour,

    Merci, j'avais en effet inclus une nouvelle étape proc means sur les classes, mais l'output out manquait.

    Cela fonctionne.

    remi

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

Discussions similaires

  1. [SQL] Somme de colonnes sur des variables indicées
    Par blastfrance dans le forum SAS Base
    Réponses: 14
    Dernier message: 11/10/2018, 16h31
  2. [SQL] Somme en ligne sur un nombre variable de colonnes
    Par mariem84 dans le forum SAS Base
    Réponses: 7
    Dernier message: 11/10/2013, 16h01
  3. somme de variables de type date
    Par tounsi dans le forum Oracle
    Réponses: 28
    Dernier message: 12/01/2006, 15h42
  4. Somme de lignes sur union : je sèche.
    Par Vincenteyssier dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/12/2005, 10h15
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

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