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 :

Utiliser une cellule d'une table SAS


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Utiliser une cellule d'une table SAS
    Bonjour,

    Je souhaite utiliser une cellule d'une table SAS dans une PROC POWER.

    Pour ceux qui connaissent R, je souhaiterai faire ceci :
    donnees[4,3] afin d'avoir accès à la cellule du tableau 'donnees' en ligne 4 et en colonne 3.

    Le rationnel :
    J'ai plusieurs proc power à réaliser à partir de mean et sd calculés par proc means. La sortie de proc means est stockée dans une table, et j'aimerai une écrire une macro qui lancera la proc power pour chaque paire de mean - sd calculées par la proc means.

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PROC MEANS
    	DATA=donnees
    	MEAN STDDEV;
    	output out=truc_mean(where=(_STAT_ EQ 'MEAN') keep=machin _STAT_);
    RUN;
     
    %MACRO AnaPuiss (mean,sd);
    	PROC POWER ; TWOSAMPLEMEANS MEANDIFF=&mean. STDDEV=&sd. POWER=0.80 ALPHA=0.05 NTOTAL=. ; RUN;
    %MEND;
    J'espère être compréhensible, si ce n'est pas le cas, n'hésitez pas à me le dire.

  2. #2
    Membre habitué

    Homme Profil pro
    Consultant Support Client SAS
    Inscrit en
    Mai 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Support Client SAS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 94
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Je ne suis pas sûr d'avoir compris votre demande.

    En sortie de la procédure MEANS qu'obtenez-vous comme type de données (un exemple de données serait utile et plus efficace je pense)?

    Après je pense qu'il vous suffit de faire une boucle %DO qui balaye la table de sortie et stocke les valeurs de MEAN et SD puis les utilise dans la PROC POWER.

    Cordialement,
    Jérémy

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour frajen,

    Ci-dessous un exemple reproductible :
    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
    /* Exemple reproductible */
    DATA donnees;
    	INPUT X1 X2 X3;
    	cards;
    	22 24 2
    	54 556 21
    	47 825 4
    	457 64.1 545.87
    	;
    RUN;
     
    PROC MEANS
    	DATA=donnees
    	MEAN
    	STDDEV;
    	output out=truc(where=(_STAT_ IN ('MEAN' 'STD')) keep=X1 X2 X3 _STAT_);
    RUN;
     
    %MACRO AnaPuiss (mean, sd);
    	PROC POWER ; TWOSAMPLEMEANS  MEANDIFF=&mean. STDDEV=&sd. POWER=0.80 ALPHA=0.05 NTOTAL=. ; RUN;
    %MEND;
     
    %AnaPuiss (truc(where=(_STAT_ EQ 'MEAN') keep=X1), truc(where=(_STAT_ EQ 'STD') keep=X1));
    Voila, est-ce que c'est plus clair ?
    Même si c'est faisable avec une boucle et que j'aimerai savoir comment ça se code, j'aimerai également savoir comment utiliser une cellule d'une table SAS dans une procédure.
    Avec l'exemple plus haut, j'aimerai savoir comment utiliser la cellule ligne 1, colonne 2 de la table SAS 'truc'.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Voici une solution à base de tranpose et de scan (à mettre en place après ton proc means):
    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
    proc transpose data=truc out=truc2;run;
     
    proc sql noprint;
    	select count(col1) into:nb_ligne from truc2;
    	select col1 into:mean separated by '|' from truc2;
    	select col2 into:std separated by '|' from truc2;
    run;quit;
     
    %macro power();
    	%do i=1 %to &nb_ligne.;
    		%let mean_row=%scan("&mean.",&i.,"|");
    		%let std_row=%scan("&std.",&i.,"|");
    		PROC POWER ; TWOSAMPLEMEANS  MEANDIFF=&mean_row. STDDEV=&std_row. POWER=0.80 ALPHA=0.05 NTOTAL=. ; RUN;quit;
    	%end;
    %mend power;
    %power();

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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