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 :

date format excel transformation datepart


Sujet :

SAS Base

  1. #1
    Nouveau Candidat au Club
    date format excel transformation datepart
    Bonjour, j’ai un fichier Excel avec des dates sous forme: 03/29/2020 20:56
    J’ai essayé de prendre cette variable date pour la séparer et avoir l’heure, la date mais je n y arrive pas.
    tous les participants ont une date.

    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 mem; set mem1;
    datee = datepart(date); 
    format datee MMDDYY10.;
    heure = timepart(date);
    format heure HHMM.;
    run; 
    Data mem; set mem1;
    format datee  ddmmyy10. heure  time5.;
    datee = datepart(date); 
    heure = timepart(date);
    run;
    proc print data = mem ; var datee heure ; 
       title "entrevue"; 
    run;

    message erreur
    NOTE: Missing values were generated as a result of performing an operation on missing values.
    Each place is given by: (Number of times) at (Line) : (Column).
    936 at 421:9 936 at 423:9
    NOTE: There were 936 observations read from the data set .
    NOTE: The data has 936 observations and 148 variables.
    NOTE: DATA statement used (Total process time):
    real time 0.26 seconds
    cpu time 0.17 seconds

  2. #2
    Membre éprouvé
    etape data
    Bonjour,

    Les étapes data écrasent les tables existantes. N'oubliez pas l'instruction set.

    Cordialement,

    PS : Vous pouvez encadrer votre code par les balises [CODE] pour en faciliter la lecture (vous pouvez sélectionner le code et cliquer sur l'icône #). Vous pouvez éditer votre message pour faire la modification.

  3. #3
    Nouveau Candidat au Club
    Bonjour , je ne comprends pas . Puis oui la formulation data ab;set dc; n’a pas été oublié .

  4. #4
    Membre éprouvé
    étape data
    Oui, pardon, j'avais effacé votre instruction set mem1 puisque vous ne fournissez pas de table mem1.

    Votre code fonctionne correctement :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    data mem;
      date_dt = datetime();
      format date_dt datetime.;
      datee = datepart(date_dt);
      format datee MMDDYY10.;
      heure = timepart(date_dt);
      format heure HHMM.;
    run;
     
    proc print data=mem noobs;
    run;


    Vérifiez le contenu de votre table mem1.

    Cordialement,

  5. #5
    Nouveau Candidat au Club
    Merci.. le résultat est légèrement différent cette fois ci ca marque que la date et l’heure d’aujourd’hui pour les nouvelles variables créées.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Data mem.aidant1; set aidant;
    datef = date; 
    datef = datetime();
    format Datef datetime; 
    datee = datepart(datef);
    format datee MMDDYY10.;
    heure = timepart(datef);
    format heure  time5.;
     
    run;
    proc print data = mem.aidant1 noobs; var date datef datee heure ; 
       title "naissance"; 
    run;

  6. #6
    Membre éprouvé
    étape data
    Il ne faut pas mettre l'instruction datef = datetime();... C'était pour créer une variable au format datetime pour tester votre programme...

    Vérifiez le contenu de votre table mem1. Par exemple :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    proc means data=mem1 n nmiss;
      var date;
    run;


    Cordialement,

  7. #7
    Nouveau Candidat au Club
    oui le proc means ne marche pas vu ma variable date donc cest normal je crois . merci je vais essayer avec proc format

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    proc format; 
      picture ddmmyyyy other=' 
    /%0m/%0Y' (datatype=date); 
      picture dtddmmyyyy other=' 
    /%0m/%0Y' (datatype=datetime); 
    run;

  8. #8
    Membre éprouvé
    Bonjour,

    Peut-être votre date a-t-elle été importée au format texte. Vous pouvez vérifier le type des variables avec le code suivant :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    data mem;
      date_dt = datetime();
      format date_dt datetime.;
      date_txt = put(date, datetime.);
    run;
     
    ods select position;
    proc contents data=mem varnum;
    run;


    Cordialement,

  9. #9
    Nouveau Candidat au Club
    data
    Bonsoir, dans mon fichier original la variable date est de type caractères et format $16. mais ici c est en numérique.



    avec les messages précédents j ai pu avoir une variable datee en numérique et format MMDDYY10.

    je vais peut être recommencer demain. Merci encore.