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 :

PROC FREQ coder en dure les modalités


Sujet :

SAS STAT

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 7
    Points
    7
    Par défaut PROC FREQ coder en dure les modalités
    Bonjour,

    Cela fait plusieurs jours que je rame sur une proc freq.

    Voila la table avec laquel je travail:

    Sexe Type
    F CI
    F HDG
    F GP
    M NS
    M CI
    M HDG
    F GP
    M CI
    F HDG
    F NS
    M CI


    Je veux effectuer une proc freq afin d'obtenir le nombre de 'F' et 'M' par Type. Mais le souci c'est que les types suivants ''RELM", "AS" et "RT" manquent dans mon tableau.
    Donc ce que je voudrais faire c'est utiliser une proc freq en codant en dure les types manquant, afin d'obtenir pour tout les types, le nombre d'homme et de femme, est-ce possible?

    Un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    proc freq data=test ;
    table CdSexe*("CI " "GP" "HDG" "NS" "RELM" "AS" "RT") ;
    ODS output crosstabfreqs=StatSexeBis (keep=CdSexe ("CI " "GP" "HDG" "NS" "RELM" "AS" "RT") Frequency ColPercent);
    run;
    Merci pour le temps que vous allez me consacrer.

  2. #2
    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 476
    Points
    4 476
    Par défaut
    Bonjour.
    Si les codes sont totalement absents des données, ça va être dur pour SAS de deviner qu'ils existent. S'il manque des combinaisons, tu peux faire TABLE sexe*Type / LIST SPARSE et avoir toutes les combinaisons même avec 0 individus. Mais uniquement pour les valeurs présentes au moins une fois dans les données.
    Sinon il faudra sortir la proc Tabulate qui permet de charger un format avec toutes les valeurs possibles (CLASS ... PRELOADFMT), et indiquer qu'on veut les voir dans le tableau (TABLE ... / PRINTMISS). Il y a un exemple dans cette doc.
    Bon courage.
    Olivier

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour votre réponse:
    Cela fonctionne très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PROC FORMAT;
    VALUE $TestSeg "0"="CI" 
    		       "1"="GP" 
    		       "2"="HDG" 
    		       "3"="NS"
    		       "4"="RELM";		  
    RUN;
     
    PROC TABULATE DATA = test ;
      FORMAT TypeSeg $TestSeg.;
      CLASS CdSexe TypeSeg / PRELOADFMT ;
      TABLE CdSexe, TypeSeg *(N="Nb" COLPCTN="%COL") (all PCTN)  / PRINTMISS MISSTEXT='0' ;
    RUN ;
    Cela est-il faisable avec une proc freq? Sinon comment récupérer le résultat dans une table ?

  4. #4
    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 476
    Points
    4 476
    Par défaut
    Non, malheureusement ça ne fonctionne pas dans une proc Freq ; seulement MEANS, TABULATE et REPORT.
    Pour récupérer une table en sortie de la proc Tabulate, il faut ajouter une instruction ODS OUTPUT TABLE = nom_table_SAS ; en personnalisant le nom de la table créée.
    Bon courage.
    Olivier

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses. Problème résolu !!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/06/2017, 13h58
  2. Proc freq et modalités
    Par tunistat dans le forum SAS STAT
    Réponses: 1
    Dernier message: 04/04/2014, 11h18
  3. Afficher % dans les histogrammes - proc freq
    Par joyeux_lapin13 dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 06/05/2013, 10h03
  4. Réponses: 3
    Dernier message: 21/09/2012, 13h30
  5. proc freq avec toutes les modalités
    Par Saori dans le forum ODS et reporting
    Réponses: 6
    Dernier message: 17/07/2008, 12h26

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