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

Macro Discussion :

Analyse univariée avec PROC FREQ


Sujet :

Macro

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Analyse univariée avec PROC FREQ
    Bonjour,

    

Actuellement je cherche à modifier une macro devant afficher l’effectif total et son % pour chaque modalité d’une variable catégorielle.

    Cette macro sera ensuite intégrée dans un programme et sa sortie sera sous la forme d’une colonne "TOTAL"* adjointe à d'autres sorties.



    Jusqu’à présent je n’arrive pas à corriger les éléments empêchant la macro de fonctionner. 


    Est-ce que quelqu’un peut relire le code et me dire ce qui cloche svp ?

    merci par avance



    %MACRO analyseuni(in=_last_,dep=, vars=, out=_out);

    PROC FREQ DATA=&in.;
    TABLES &vars.;
    ods output OneWayFreqs=_owf;
    RUN;

    PROC SQL;
    SELECT COUNT(*) INTO :_cptModalites FROM _owf;

    PROC FREQ DATA=&in.;
    TABLES &vars.;
    ods output CrossTabFreqs=_ctf;
    RUN;


    PROC SORT DATA=_ctf;
    BY table &vars. ;
    RUN;


    DATA _tmp(keep=&vars. variable modalite type value1);
    MERGE _ctf;
    BY table;

    ATTRIB variable length = $32;
    ATTRIB modalite length = $255;
    ATTRIB type length = $32;
    ATTRIB value1 length = 8;

    variable = SUBSTR(Table, INDEX(Table, "*") + 2);
    modalite = COMPRESS(vvaluex(variable));
    type = 'Frequency'; value1 = Frequency;
    output;
    type = 'RowPercent'; value1 = RowPercent;
    output;
    RUN;

    proc sort data=_tmp out=_tmp;
    by variable modalite ;
    run;

    proc transpose data=_tmp out=_tmp(drop=_name_);
    id type;
    by variable modalite ;
    var value1;
    run;


    DATA _tmp(KEEP=variable modalite value);
    set _tmp;
    by variable modalite;
    OUTPUT;

    attrib value length = $32;
    OUTPUT;



    PROC TRANSPOSE DATa=_tmp OUT=&out.(DROP=_NAME_);
    BY variable modalite;
    ID type;
    VAR value;
    RUN;

    PROC DATASETS LIB=work NOLIST;
    DELETE _ctf _tmp;
    RUN;

    %MEND analyseuni;

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    personne?

Discussions similaires

  1. Tableau croisé avec proc freq
    Par huître dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 13/04/2012, 11h55
  2. Fréquences et pourcentages cumulés avec proc freq
    Par simon_allouche dans le forum SAS STAT
    Réponses: 2
    Dernier message: 29/09/2010, 22h46
  3. PROC FREQ avec pondérations négatives
    Par delph_le dans le forum SAS STAT
    Réponses: 0
    Dernier message: 06/02/2009, 11h25
  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. proc freq avec toutes les modalités
    Par Saori dans le forum ODS et reporting
    Réponses: 6
    Dernier message: 17/07/2008, 11h26

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