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 :

Conversion chaine de caractères -> date


Sujet :

SAS Base

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut Conversion chaine de caractères -> date
    bonjour,



    j'ai un certain nombre de variables qui commence par 'D_
    ces variables correspondantes à des dates , ces dates sont stockées sous le format suivant $10. et sont de cette forme '17/11/2011'
    j'aimerai bien garder les dates sous cette forme mais en changeant le format afin qu'il soit de type date
    j'ai effectué un code qui me donne malheureusement des dates sous cette forme :
    '17/11/2011' ===> 21143

    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
    proc contents data=Fine3.pop out=Fine3.contents_POP;
    run;
     
    proc sql noprint;
    select name into: var3
    separated by ' '
    from Fine3.contents_POP
    where name like 'D_%';
    quit;
     
    DATA Fine3.pop3(drop=i);
    set Fine3.pop;
    array var {*} &var3;
    do i=1 to dim(var);
    if not missing(var{i}) then var{i}=input(var{i}, yymmdd8.);
    end;
    run;
    pouvez vous m'aider, merci d'avance

  2. #2
    Membre actif Avatar de tdiallo
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 118
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Après ton input , il faut appliquer le format ddmmyy10. à la variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    date=input(var ,ddmmyy10.);
    format date ddmmyy10.;

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    ok
    et c'est possible de faire ça

    format &var3 ddmmyy10.; .

    enfin, est ce qu'il est possible d'affecter un mm format pour toutes les variables d'une macro variable ???

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Hello,

    Pour commencer, il faut que tu convertisse tes variables caractères en numérique tout en gardant le même nom des variables Exemple ici.

    Ensuite pour appliquer le même format à toutes des variables dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    data test;
    set test;
    forma d_: DDMMYYs10.;
    run;

  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,
    Si tu ne veux pas garder le même nom des variables, tu peux utiliser deux arrays puis appliquer le format souhaité :
    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 Fine3.pop3(DROP=i);
    SET Fine3.pop;
    array var {*} &var3;
    array arr(??) ; /* ?? ne oublies pas de mettre la dimension */
    do i=1 TO dim(var);
    IF NOT missing(var{i}) then arr{i}=input(var{i}, ddmmyy10.);
    end;
    run;
     
    data Fine3.pop3 ;
    set Fine3.pop3 ;
    format arr: ddmmyy10. ;
    run ;
    Ward

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    heu finalement
    finalement j'ai un nouveau problème ,

    en fait j'ai repris mon programme avec le code pour les formats

    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 noprint;
    SELECT name INTO: var3
    separated BY ' '
    FROM contents_pop
    WHERE name LIKE 'date_%';
    quit;
     
    DATA pop(DROP=i);
    SET pop;
    array var {*} &var3;
    do i=1 TO dim(var);
    IF NOT missing(var{i}) then var{i}=input(var{i}, ddmmyy10.);
    end;
    run;
     
    DATA pop ;
    SET pop ;
    format date: ddmmyy10. ;
    run ;
    et j'obtiens cet horrible message d'erreur

    ERROR 48-59: The format $DATE was not found or could not be loaded

    or quand j'essaye le code de hossward
    ça fonctionnel nickel pourtant il n'est pas si différent du mien
    le seul probleme avec le code c'est que ça me renomme les variable en arr1 arr2 arr3 arr4


    est ce qu'il existe une fonction qui permet de faire un traitement comme la ligne marquée italique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DATA pop(DROP=i);
    SET pop;
    array var {*} &var3;
    do i=1 TO dim(var);
    IF NOT missing(var{i}) then var {i}||"_d"=input(var{i}, ddmmyy10.);end;
    run;
    en gros de créer une de nouvelle variable dont le nom correspond à une concatenation de la précedente avec une chaine de caractere quelquonque

    merci d'avance

  7. #7
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Hello,
    Avec l'exemple que je t'ai donné tu pourra changer le type de ta variable sans changer son nom.

    Je ne crois pas que le code donné ci-dessus permet de changer le type de la variable ( ici du caractère au numérique sauf si on change son nom)

  8. #8
    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
    Citation Envoyé par huître Voir le message
    en gros de créer une de nouvelle variable dont le nom correspond à une concatenation de la précedente avec une chaine de caractere quelquonque
    Bonjour,
    Si tu veux garder le même nom de variables avec un suffixe quelquonque, dans ce cas la, tu peux créer une deuxième macro variable au sein de la proc SQL appelée ici &var4 à l’aide de la fonction CATS. Dans l’étape data tu es obligé d’utiliser un deuxième array ayant &var4 comme variables numériques.
    Voici ton code repris et légèrement rectifié :
    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
     
    proc sql noprint;
    SELECT name, cats(name,'_d')
    INTO: var3 separated BY ' ',
        : var4 separated BY ' '
    FROM contents_pop
    WHERE name LIKE 'date_%';
    quit;
     
    DATA pop(DROP=i);
    SET pop;
    array var {*} &var3;
    array arr (*) &var4;
    do i=1 TO dim(var);
    IF NOT missing(var{i}) then arr{i}=input(var{i}, ddmmyy10.);
    end;
    format &var4 ddmmyy10. ;
    run;
    Ward

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    oui c'est bon c'est ce que j'ai fait
    je te remercie

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/12/2011, 18h56
  2. Conversion Chaine de caractères en Date
    Par Bayfall dans le forum Pentaho
    Réponses: 2
    Dernier message: 30/07/2010, 15h00
  3. Conversion de chaine de caractères en date
    Par rouinin dans le forum JDBC
    Réponses: 1
    Dernier message: 01/07/2009, 11h04
  4. Conversion chaine de caractères en numérique
    Par arezki76 dans le forum Shell et commandes GNU
    Réponses: 33
    Dernier message: 18/07/2007, 12h25
  5. conversion chaine de caractères --> HTML
    Par captainflex dans le forum Ruby on Rails
    Réponses: 9
    Dernier message: 17/06/2007, 22h37

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