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 :

Création de variable avec durées


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 Création de variable avec durées
    Bonjour à tous,

    Je vous pose l'énième question concernant des array.
    J’ai créé le programme suivant où je tente d’établir si un enfant est ne ou pas dans le mariage. Les variables sont les suivantes :
    anaisenf_: / années de naissance des enfants (data la base il y en a 13 au maximum)
    datmat1-datmat6 / dates des différents mariages (data la base il y en a 6 au maximum)
    fin1-fin6 / dates des divorces ou veuvages (data la base il y en a 6 au maximum)

    $ STATENF1-STATENF13 / je créé ces variables pour connaître la ‘nature’ de l’enfant (qui sont 13 au maximum)


    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
    DATA NAISS3 ; SET NAISS2 ; 
    WHERE SEXE='2'; 
     
    array enf (13)  anaisenf_: ; 
    array statenf (13) $ STATENF1-STATENF13 ;
    array debmat (6) datmat1-datmat6; 
    array datfin (6) fin1-fin6 ; 
     
    do i=1 to dim(enf); 
    do n=1 to 6; 
     
    if enf(i) ne . then statenf(i)='naiss_hm'; 
     
    if not missing(debmat(n)) then do; 
    	if debmat(n)>0 and datfin(n)=. then datfin(n)=2005;
    	if enf(i) ne . and debmat(n)<=enf(i)<=datfin(n) then statenf(i)='naiss_ma' ; /*cette partie ne marche pas */
       end;
    end; 
    end; 
    keep statenf:  anaisenf_: datmat1-datmat6 fin1-fin6  ; run;
    Sachant qu’il existe dans la base des femmes qui n’ont pas connu l’événement datefin(n), je leur ai attribu datefin(n)=2005 (date de l’enquête).
    En gros, je désire établir que lorsque la naissance de l’enfant est comprise entre la date du mariage et la date du divorce, alors cet enfant est né dans le mariage.
    Mon programme toutefois ne marche visiblement pas

    Avez-vous des suggestions à me faire ?

    Toute ma reconnaissance à ceux qui voudront répondre

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Data Scientist
    Inscrit en
    Juillet 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2015
    Messages : 12
    Points : 39
    Points
    39
    Par défaut Instruction between
    Salut à toi,

    Il me semble que tu peux utiliser l'expression between sur des variables au format date sous SAS.
    ainsi, tu peux savoir si une date est entre deux autre dates. Cela te simplifiera la vie.

    Sinon, tu peux créer une dummy variable qui vaut 1 et la modifier en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PROC SQL;
    UPDATE TABLE 
               Set ta_variable = 0 
               WHERE anaisenf BETWEEN 'jj-mm-aaa' AND 'jj-mm-aaa';
    QUIT;
    Tu auras des 1 pour un enfant né hors mariage et des 0 sinon. SI tu as plusieurs dates de mariage et de divorces, tu peux rajouter des closes OR à ton UPDATE TABLE.

    Un truc dans le genre devrait faire l'affaire. Je n'ai pas SAS devant moi alors je ne peux pas te dire si la syntaxe est exacte.

    Bonne journée et bonne chance

  3. #3
    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 pour ta réponse. Toutefois j'ai quelques problèmes, en effet, je ne maîtrise pas le SQL.

    J'aime par contre l'idée d'utiliser la fonction between, mais comment l'utiliser quand il s'agit d'un éventement qui pourrait avoir lieu entre plusieurs éventements.

    Je m'explique : une personne peut avoir été mariée au moment t, divorcée au moment t+2, puis elle a eu un enfant (t+5), puis elle s'est remariée (t+7). L'enfant est né hors mariage alors que la personne au moment de l'enquête est mariée.

    Peut-on utiliser between dans un array. Je vais essayer.

    Merci bien pour ton aide

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 60
    Points : 49
    Points
    49
    Par défaut Si utilisation de SAS guide !!!
    Bonjour,
    J'utilise beaucoup la création de colonnes calculées à partir du générateur de requêtes.

    par exemple :
    case
    when date_naissance >= date_mariage and date_naissance<= date divorce then "Enfant né dans pendant le mariage"
    else "Enfant hors mariage
    end

    A+

Discussions similaires

  1. Création de variable avec array et valeurs manquantes
    Par valesole dans le forum Débutez
    Réponses: 2
    Dernier message: 21/05/2015, 18h40
  2. Création de variables avec d'autres valeurs
    Par chow59 dans le forum Débutez
    Réponses: 3
    Dernier message: 19/09/2013, 10h43
  3. Création de variable avec SQL
    Par valesole dans le forum Débutez
    Réponses: 2
    Dernier message: 22/07/2013, 16h45
  4. Création de variable avec un pipe
    Par mouatte dans le forum Linux
    Réponses: 3
    Dernier message: 14/02/2009, 08h06
  5. Création de variable avec un type variable !
    Par Marcool dans le forum C++
    Réponses: 17
    Dernier message: 28/08/2008, 16h22

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