I'm creating a simple toy dataset containing date variables with the MMDDYY10. format:
data test;
input id $ ed_from MMDDYY10. ed_to MMDDYY10. ip_from MMDDYY10. ip_to MMDDYY10.;
format ed_from MMDDYY10. ed_to MMDDYY10. ip_from MMDDYY10. ip_to MMDDYY10.;
datalines;
CT0001 05/22/2011 05/22/2011 05/22/2011 05/30/2011
CT0001 06/22/2011 06/22/2011 06/22/2011 06/30/2011
CT0002 07/01/2012 07/02/2012 07/01/2012 07/06/2012
CT0002 07/10/2012 07/10/2012 07/20/2012 07/25/2012
;
run;
However I receive "Invalid data..." error messages when I attempt to run the above code.
Any help identifying what I'm doing wrong is much appreciated!
Thanks,
Robert
try this:
input id $ ed_from:MMDDYY10. ed_to:MMDDYY10. ip_from:MMDDYY10. ip_to:MMDDYY10.;
try this:
input id $ ed_from:MMDDYY10. ed_to:MMDDYY10. ip_from:MMDDYY10. ip_to:MMDDYY10.;
Fantastic, worked beautifully. I wasn't aware we should use colons in the input statement, this is good to know.
Thanks DBailey!
You can use either formatted input with a field size that correspond with the TOTAL column spacing:
input id $ (ed_from ed_to ip_from ip_to) (MMDDYY11.);
or use pointer controls to move the line pointer to the beginning of date fields:
input id $ (ed_from ed_to ip_from ip_to) (+1 MMDDYY10.);
or modified list input with an informat that correspond with the size of the text tokens irrespective of the spacing between them:
input id $ (ed_from ed_to ip_from ip_to) (:MMDDYY10.);
PG
Message was edited by: PG Added an alternative.
Thank you, this is very helpful!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.