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 :

Codage variable


Sujet :

SAS Base

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 19
    Par défaut Codage variable
    Bonjour a tous,

    Dans le cadre d'un travail, je dois analyser avec SAS (version 9.1) les données d'une enquête... et j'ai quelques problemes

    Les questions de l'enquete se presentent de la maniere suivante:


    sentiments jamais rarement parfois svt très svt

    se sentir deprimé 1 2 3 4 5
    perdre l'appetit 1 2 3 4 5
    avoir idees noires 1 2 3 4 5
    se sentir fatigué 1 2 3 4 5
    douter de soi 1 2 3 4 5
    etre irritable 1 2 3 4 5
    etre pessimiste 1 2 3 4 5
    penser au suicide 1 2 3 4 5
    penser à la mort 1 2 3 4 5
    pleurer facilement 1 2 3 4 5


    J'aimerais bien creer une variable (depression) qui prendrait la valeur

    1 si la personne a repondu 1 à minimum 7 sentiments
    2 si la personne a repondu entre 2 et 3 à minimum 7 sentiments
    3 si la personne à repondu entre 4 et 5 à minimum 5 des sentiments

    Quelqu'un peut m'aider?????

    Merci beaucoup

  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 : 49
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Bonjour.
    Je suppose que les differents sentiments sont stockés dans des variables séparées, avec une observation par enquêté, genre :
    ID Q1 Q2 ...
    1 1 3 ...
    Je te propose de récupérer la 7e plus faible note parmi les différentes variables Q1 à Q10 (appelons-les comme ça, le code est plus simple. Sinon, on peut les énumérer au lieu du OF Q1-Q10, séparées par des virgules).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    min7 = SMALLEST(7, OF Q1-Q10) ;
    [Remarque : ça ne marche qu'en SAS v9.]
    Ensuite : depression = 1 si min7=1 ; depression = 2 si 1 < min7 < 4 et ainsi de suite.

    Ca ressemble aux données de l'enquête SMPG, non ?
    Olivier

    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
    DATA work.test ;
    	INPUT id q1-q10 ;
    	min7 = SMALLEST(7, OF Q1-Q10) ;
    	min5 = SMALLEST(5, OF Q1-Q10) ;
    	SELECT ;
    		WHEN (min7=1) depression=1 ;
    		WHEN (min7<4) depression=2 ;
    		WHEN (3<min5<6) depression=3 ;
    		OTHERWISE depression=. ;
    	END ;
    CARDS ;
    1 5 1 1 1 1 1 3 1 1 7
    2 5 4 8 9 3 4 3 9 3 5
    3 2 2 2 2 2 4 5 6 8 3
    ;
    RUN ;

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 233
    Par défaut
    Je ne comprends pas comment tu stockes des réponses. Imaginons que tu as une table à 3 colonnes : ID (numéro de la personne), QUESTIONS (numéro de question), ANSWER (le numéro de 1 à 5 correspondant à la réponse).

    1. Décompte des nombres des réponses par catégorie :
    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
    proc sql;
    create table TEMP as
    	select ID,
    		sum(case
    			when ANSWER = 1 then 1
    			else 0
    		end) as NOTE1,
    		sum(case
    			when ANSWER in (2, 3) then 1
    			else 0
    		end) as NOTE2,
    		sum(case
    			when ANSWER in (4, 5) then 1
    			else 0
    		end) as NOTE3
    	from DATA
    	group by ID
    ;
    quit;
    NB : on peut le faire de manière plus élégante avec un format et group by.

    2. Décision en fonction de décompte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    proc sql;
    create table FINAL as
    	select ID,
    		case
    			when NOTE1 >= 7 then 1
    			when NOTE2 >= 7 then 2
    			when NOTE3 >= 4 then 3
    			else 0
    		end as NOTE
    	from TEMP
    ;
    quit;
    Attention : tu peux avoir une personne qui ne rentre pas dans ta moule. par exemple, celui qui a répondu 6 fois 1, 2 fois 2 et 2 fois 4.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 19
    Par défaut
    Super ça marche...
    Mais ce n'est pas les données de l'enquête SMPG...

    Merci beaucoup

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 233
    Par défaut
    2 olivier.decourt : ton code donnera le niveau de dépression 2 pour une personne qui a choisi 4 fois 1, 4 fois 2 et 2 fois 5, par exemple.

  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 : 49
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    @ Green (et aux autres) :
    Mea culpa, ma solution proposée sans réflexion de fond était effectivement pleine de trous.
    J'essaye de la rectifier, au cas où les données seraient organisées en autant de colonnes (si elles sont en lignes, la solution de Green est parfaite ; d'ailleurs une proc Transpose bien sentie peut permettre de s'y ramener).
    L'idée serait de compter le nombre de 1, de 2, de 3 aux différentes questions, et ensuite il est tout simple d'arriver aux définitions voulues pour la nouvelle colonne DEPRESSION.
    Dans le code, la fonction COMPRESS avec un K final ne conserve que le caractère en 2e argument. Le CATX aura concaténé toutes les valeurs en une chaîne de caractères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DATA work.test ;
    	INPUT id q1-q10 ;
    	reponses = CATX("-", OF Q1-Q10) ;
    	nb1 = LENGTH(COMPRESS(reponses,"1","K")) ;
    	nb2 = LENGTH(COMPRESS(reponses,"2","K")) ;
    	nb3 = LENGTH(COMPRESS(reponses,"3","K")) ;
    	nb4 = LENGTH(COMPRESS(reponses,"4","K")) ;
    	nb5 = LENGTH(COMPRESS(reponses,"5","K")) ;
    CARDS ;
    1 5 1 1 1 1 1 3 1 1 7
    2 5 4 8 9 3 4 3 9 3 5
    3 2 2 2 2 2 4 5 6 8 3
    ;
    RUN ;
    Olivier

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

Discussions similaires

  1. codage variable qualitative (dummy)
    Par figone dans le forum R
    Réponses: 3
    Dernier message: 27/06/2018, 18h23
  2. Codage d'une variable
    Par cococmoi dans le forum SAS Base
    Réponses: 15
    Dernier message: 19/09/2012, 14h50
  3. [EG] Codage de variables
    Par Au pays des stats dans le forum Outils BI
    Réponses: 4
    Dernier message: 03/01/2012, 14h53
  4. Modifier le codage d'une variable
    Par ganodelf dans le forum R
    Réponses: 1
    Dernier message: 10/03/2010, 10h14
  5. Codage de variables.
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 09/10/2005, 21h13

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