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

Débutez Discussion :

Affecter une valeur en ligne à la ligne précédente (ou suivante)


Sujet :

Débutez

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 18
    Points : 22
    Points
    22
    Par défaut Affecter une valeur en ligne à la ligne précédente (ou suivante)
    Bonjour à tous,
    J’ai un problème avec ma base de données et je n’ai aucune idée de comment le résoudre.
    Je cherche à affecter une valeur en ligne à la ligne précédente (ou suivante) selon la relation qu’il existe entre les deux individus.

    J’ai les éléments suivants :
    IDMEN = identifiant ménage
    ID = identifiant à l’intérieur du ménage
    SEXE= sexe de la personne où '1' = homme et '2' = femme;
    ETATMAT= état matrimonial où ‘2’ correspond à une personne mariée ; ‘1’ célibataire et ‘5’ veuve/veuf
    ENF = nombre d’enfant de la personne
    RELPAR = relation de parentèle avec le référent du ménage
    Où 01 est le/la référent(E) ; 02 son épouse ou son époux ; 06 est l’enfant de 01 ; 08 le/ conjoint(E) de 06 ;

    IDMEN ID SEXE ETATMAT ENF RELPAR
    01 01 1 2 . 01
    01 02 2 2 2 02
    01 03 2 2 3 06
    01 04 1 2 . 08
    01 05 1 1 . 06
    02 01 2 5 1 01
    02 02 2 2 2 08
    02 03 1 2 . 06


    Dans ce questionnaire le nombre d’enfant a été demandé seulement à la femme mariée (et pas à son conjoint). Je voudrais donc affecter ENF au conjoint.
    Dans le cas où la RELPAR est 01 et 02 j’ai réussi en utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     proc transpose data=couple out=nb_enf (drop=_name_) prefix=nb_enf ;
       by IDMEN;
       var enf ;
       id rang; */ j’ai crée cette variable pour identifier seulement les couples /*
    run;
    Par contre, pour la relation 06 et 08 la situation est plus complexe car : parfois 06 est la femme (ex IDEMEN ‘01’), parfois c’est l’homme (IDMEN = ‘02’). En outre dans un ménage peut y avoir un deuxième enfant qui n’est pas marié (ex IDMEN=’01’ ETATMAT=’01’).
    Je souhaite donc affecter le nombre d’enfant de la femme au conjoint lorsque on se trouve dans la configuration familiale 06, 08 en faisant attention à ne pas affecter le nombre d’enfant au mauvais enfant '06' (dans IDMEN=’01’ le 'mauvais' enfant est le deuxième 06, c’est-à-dire ‘homme célibataire habitant dans un logement avec ses parent, sa sœur et le mari de la sœur).

    Il s’agit d’un exemple relativement complexe. J’espère d’avoir réussi à bien expliquer ce que je suis en train de chercher à résoudre.

    Je vous remercie pour votre aide

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Pourquoi tu n'isoles pas la valeur ENF des mères dans une table puis tu la remerge avec cette table en indiquant que si SEXE - Homme et si RELATION - CONJOINT alors ENF = ENFmere par exemple ?
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  3. #3
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonjour,

    si on a plus plusieurs couples 06 et 08 par ménage (ayant chacun son nombre d'enfants) comment retrouve-t-on les bon couples ?

    Par ordre d'apparition ?

    question subsidiaire : Les membres du couple sont ils forcément de sexe opposé ?

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Merci pour vos réponses ...

    J’essaye de répondre à vos questions dans l'ordre :

    #Réponse 1

    Je pense de ne pas avoir bien compris ce que tu proposes. Il s'agirait de 'multiplier' la variable enf et l’affecter à tous les individus du ménage ?

    #Réponse 2

    1 - La configuration dont tu parles est présente dans deux ménages. Je pensais de 'tricher' et imputer les valeurs 'à la main'.
    2- Les membres d'un couple marié sont forcément hétérosexuels (ce sont des données sur un pays où il n'existe pas de reconnaissance des couples homosexuels - je devrai par contre regarder s'il existe des couples cohabitantes homosexuels).

    Encore merci

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Je pense que ce code répond parfaitement à cet exemple. Il faudrait l'appliquer aux vraies données et voir s’il s'adapte correctement.
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    data COUPLE;
    input IDMEN ID SEXE ETATMAT ENF RELPAR ;
    format IDMEN ID RELPAR z2. ;
    cards ;
    01 01 1 2 . 01
    01 02 2 2 2 02
    01 03 2 2 3 06
    01 04 1 2 . 08
    01 05 1 1 . 06
    02 01 2 5 1 01
    02 02 2 2 2 08
    02 03 1 2 . 06
    ; run ;  
     
    data COUPLE1 (drop=enf_12 enf_68 enf rename=(enf_conjoint=enf)) ;
    enf_12=0 ; enf_68=0 ;
    do until(last.IDMEN) ;
     set COUPLE ;
     by  IDMEN notsorted ;		
     if  SEXE=2 and not missing(ENF) then do ;
      if RELPAR in (01, 02) then enf_12=ENF  ;
      if RELPAR in (06, 08) then enf_68=ENF  ;
                                         end ;    
    end;  
    do until(last.IDMEN) ;	
     set COUPLE;	
     enf_conjoint=. ;
     by  IDMEN notsorted ;	
      if RELPAR in (01, 02) then enf_conjoint=enf_12 ;
      if RELPAR in (06, 08) and ETATMAT=2 then enf_conjoint=enf_68 ;	
      output;
    end;
    run;
    Cordialement Ward

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Merci Ward c'est parfait !

    Ton aide est tjs précieuse

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

Discussions similaires

  1. Rechercher une valeur et supprimer la ligne si trouvée
    Par hehee dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/04/2019, 14h48
  2. [Python 3.X] modifier une valeur dans la meme ligne
    Par wassil56 dans le forum Général Python
    Réponses: 6
    Dernier message: 13/05/2015, 20h25
  3. Réponses: 4
    Dernier message: 15/12/2010, 12h36
  4. Recherche une valeur et récupérer la ligne correspondante.
    Par impur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/07/2010, 13h06
  5. [scriplet] affecter une valeur par un bean:write
    Par viena dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 25/11/2004, 16h29

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