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 :

Export de plusieurs variables avec PROC UNIVARIATE


Sujet :

SAS STAT

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 35
    Points : 35
    Points
    35
    Par défaut Export de plusieurs variables avec PROC UNIVARIATE
    Bonjour,

    J'essaie désespérément d'exporter les stats de plusieurs variables dans une table. Je me suis aperçu que PROC MEANS exportait les stats en ligne, or je préfère les avoir en colonne. Je me suis donc tourné vers PROC UNIVARIATE mais elle ne semble pas gérer l'export de plusieurs variables.

    Par exemple, le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROC UNIVARIATE NOPRINT DATA=matable;
    VAR x y;
    OUTPUT OUT=temp MEAN=moyenne;
    RUN;
    n'exporte que la moyenne de la variable x dans la table matable. Comment faire ?

    Merci d'avance,
    Mark

  2. #2
    Membre expérimenté
    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
    Points : 1 489
    Points
    1 489
    Par défaut
    Bonjour,
    La proc means est pas mal aussi pour faire ça, puis tu transposes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    proc means data=sashelp.class;
    var  Weight Height;
    OUTPUT OUT=temp(drop=_TYPE_ _FREQ_) MEAN=;
    RUN;
     
    proc transpose data=temp out=transpose name=variable prefix=moyenne;
    var Weight Height;
    run;
    Bon courage!

  3. #3
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    pour la proc univariate il faut mettre autant de statistiques que de variables sinon sas ne peut pas comprendre!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROC UNIVARIATE NOPRINT DATA=sashelp.bweight;
    VAR weight m_wtgain;
    OUTPUT OUT=temp MEAN=moyenne1 moyenne2;
    RUN;

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Ah ok, c'était un problème de syntaxe ! Si seulement l'aide de SAS donnait des exemples...

    Le problème, c'est que le tableau n'a pas la forme que je souhaite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROC UNIVARIATE NOPRINT DATA=matable;
    VAR x y;
    OUTPUT OUT=temp MEAN=moy1 moy2 STD=std1 std2;
    RUN;
    Je me retrouve avec un tableau de la forme :

    moyX moyY stdX stdY
    1

    Or, je souhaiterais avoir un tableau de la forme :

    moy std
    x
    y

    Un tableau de stats classique quoi ! Malheureusement, ça ne semble pas transposable facilement avec PROC TRANSPOSE... Vous avez une idée ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    c'est surement jouable avec la transpose, voici en tout cas une solution avec une étape data (qui présente l'avantage contrairement à la transpose de pouvoir effectuer des manipulations complémentaires).

    J'ai rajouté une variable "var_orig" pour être sur de ne pas se mélanger les pinceaux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROC UNIVARIATE NOPRINT DATA=sashelp.bweight;
    VAR weight m_wtgain;
    OUTPUT OUT=temp MEAN=moyenne1 moyenne2 std=std1 std2;
    RUN;
     
    data Tablefinale; 
    length var_orig$50.;
    set temp(keep=moyenne1 std1 in=A)
    	temp(keep=moyenne2 std2 rename=(moyenne2=moyenne1 std2=std1) in=B);
    	if A then var_orig=	"weight";
    	if B then var_orig=	"m_wtgain";
    run;

  6. #6
    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 : 46
    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
    Si tu veux récupérer des statistiques comme une moyenne, un écart-type, un min et un max et le nombre d'observations renseignées, tu peux utiliser la proc CORR (à contre-emploi mais directement avec la mise en forme voulue).
    L'avantage c'est que ça fonctionne pareil avec 250 variables numériques, et s'il y a des calculs par blocs de variables quali, on ajoute un BY.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ODS EXCLUDE ALL ;
    ODS OUTPUT simpleStats=work.stats ;
    PROC CORR DATA=sashelp.class ;
      VAR weight height ;
    RUN ;
    ODS SELECT ALL ;
    Olivier
    Bon courage.
    Olivier

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Oui, la PROC CORR exporte en effet des stats descriptives comme je le veux !

    C'est fou qu'on ne puisse pas le faire simplement, la solution de Manoutz est quand même très compliquée et demande déjà une sacrée maitrise...

    Merci à vous !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2014, 11h58
  2. Export de plusieurs tables avec des query différents
    Par debdba dans le forum Import/Export
    Réponses: 8
    Dernier message: 24/05/2012, 11h22
  3. Array - créer plusieurs variables avec un do i=
    Par debdev dans le forum SAS Base
    Réponses: 2
    Dernier message: 07/05/2009, 12h37
  4. Superposition de graph avec proc univariate
    Par Saori dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 15/12/2008, 10h27
  5. [Macro] Libellé macro-variable avec proc sql
    Par auredura dans le forum Macro
    Réponses: 2
    Dernier message: 03/09/2008, 12h46

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