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 :

Sommes des valeurs d'une variable selon une condition [DATA]


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Sommes des valeurs d'une variable selon une condition
    Bonjour,

    J'ai une table qui ressemble à ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Age    Var1  Var2 .....  VarN   TotVar   Pop   TSC
    0       0      0          0        0      0     0
    1      123    456        789     4578    8454  54.2
    2      987    654        321     6875   11175  61.5
    .
    .
    .
    Où TSC=TotVar/Pop*100

    J'aimerais créer 2 variables SOMME(TSC) et Compteur:
    Pour Age=1 SOMME(TSC)=TSC1+TSC2+...+TSC90 et Compteur=Nb de TSC pris en compte
    Pour Age=2 SOMME(TSC)=TSC2+TSC3+...+TSC90
    ...
    Pour Age=89 SOMME(TSC)=TSC89+TSC90

    Impossible d'y arriver sous SAS, c'est pourquoi je demande votre aide!
    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    8
    Par défaut
    Bonjour

    Donc si je comprends bien ce sera un table de 90 lignes dont l'age est ordonné de cette façon ? 0, 1, 2, ..., 89 ?
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    J'ai oublié la dernière ligne, il y a un âge 90 mais sinon c'est ça!

  4. #4
    Membre éprouvé
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    8
    Par défaut
    Bonjour si vraiment les ages sont ordonnées de la sorte c'est plus facile
    Cependant il y a toujours une possibilité même si les ages ne sont pas ordonnés. Il faudra juste changer un peu le code. J'ai utilisé le langage matriciel et je peux faire des opérations simplement comme sous R.

    Voici ma table que je crée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data test;do Age=0 to 90;
        TSC=ifn(Age=0,0,rand("normal",150,10));
        output;
    end;
    run;
    Voici le code qui donne les résultats dans une table que j'appelle résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    proc iml;
    use test;
    read all var{Age,TSC} into X;
    Y=J(nrow(X),2,0);
    do i = 1 to nrow(X);
    Y[i,1]=sum(X[i:91,2]);
    Y[i,2]=nrow(X[i:91,2]);
    end;
    X=X||Y;
    create Resultat from X[colname={"Age","TSC","SommeTSC","Count"}];
    append from X;
    close;
    quit;
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Bonjour,
    Si j'ai bien compris, ce code réponds également à ta problématique :
    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
    data _Null_ ; 
    set Tatable ;
    Somme+Tsc ; 
    /*  Stocker la Somme totale des(TSC) et le nombre d'Obs dans des macros variables  */
    call symputx('Somme', Somme) ;
    call symputx('Obs' ,  _n_) ;
    run ; 	 
     
    data Resultat;
    set Tatable ;
    /* SOMME(TSC)===> S_Tsc	et Compteur===> Cnt  */
    S_Tsc+(-lag(Tsc)) ;	 
    Cnt+(-1) ;
    if _n_=1 then do ; S_Tsc=&somme. ; Cnt=&Obs. ; end ;
    run ;
    Bon Courage

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci à tous les deux. Vos deux méthodes fonctionnent parfaitement!

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

Discussions similaires

  1. copier une variable d'une feuille dans une autre selon situation
    Par Master_x_99 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/03/2016, 18h43
  2. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  3. Changer la valeur d'une variable selon une date donnée
    Par RabzorGT dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/01/2015, 10h56
  4. transmission des valeurs d'une variable d'une fonction a une autre
    Par Invité dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 22/07/2009, 23h05
  5. Réponses: 4
    Dernier message: 15/08/2007, 22h05

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