web-dev-qa-db-fra.com

Comment convertir une valeur de chaîne en date dans SAS?

Je veux convertir une chaîne en date en SAS, j'ai essayé:

data _null_; 
   monyy = '05May2013'; 
   date = input(substr(strip(monyy),1,9),yymmdd.);;
   put date=date9.; 
   run;

Mais cela n'a pas fonctionné. Cela peut-il être fait?

6
SAS_learner

Vous n'avez pas besoin de substrat ou de bande.

input(monyy,date9.);
9
data _null_

Formats comme

date9. 

ou

mmddyy10. 

ne sont pas valides pour la commande d'entrée lors de la conversion de texte en date sas. Vous pouvez utiliser

Date = input( cdate , ANYDTDTE11.);

ou

Date = input( cdate , ANYDTDTE10.); 

pour la conversion.

13
Mitul

Comme indiqué ci-dessus, la réponse simple est:

date = input(monyy,date9.);

avec l'ajout de:

put date=yymmdd.;

La raison pourquoi cela fonctionne, et ce que vous n'avez pas fait, est due à un malentendu commun dans SAS. DATE9. est un INFORMAT. Dans une instruction INPUT, il fournit à l'interpréteur SAS un ensemble de commandes de traduction qu'il peut envoyer au compilateur pour transformer votre texte en bons nombres, qui ressembleront alors à une date une fois à droite FORMAT est appliqué. Les FORMAT ne sont que des représentations visibles de nombres (ou de caractères). Donc, en utilisant YYMMDD., Vous avez confondu la fonction INPUT en lui donnant un FORMAT au lieu d'un INFORMAT, et vous avez probablement obtenu une erreur utile qui disait:

Invalid argument to INPUT function at line... etc...

Ce qui ne vous a absolument rien dit sur la suite des choses.

En résumé, pour représenter la date de votre personnage en tant que YYMMDD. Dans SAS vous devez:

  1. changez INFORMAT - date = input(monyy,date9.);
  2. appliquez le FORMAT - put date=YYMMDD10.;
3
user3420862

Essayer

data _null_; 
   monyy = '05May2013'; 
   date = input(substr(strip(monyy),1,9),date9.);
   put date=date9.; 
   run;
1
Aaron Kurtzhals

Ce code aide:

data final; set final;

first_date = INPUT(compress(char_date),date9.); format first_date date9.;

run;

Je l'ai personnellement essayé sur SAS

1
Gireesh Sundaram

entrée (char_val, date9.);

Vous pouvez envisager de le convertir au format Word en utilisant input (char_val, worddate.)

Vous pouvez obtenir beaucoup de choses sur cette page http://v8doc.sas.com/sashtml/lrcon/zenid-63.htm

1
Santhosh
input(char_val,current_date_format);

Vous pouvez spécifier n'importe quel format de date à l'heure d'affichage, comme set char_val=date9.;

0
Arun Patil