I have raw data consisting of a long string of numbers separated by semicolons. Like this:
1; 2; 3; 4; 5; …
I don’t know the number of values in advance.
I’d like to read these in using a data step and create one observation per value.
I’ve looked at several examples of using the input statement, but nothing works the way I would like it to.
Anyone have a suggestion?
You can use double trailing @ to read multiple obs from one record.
data a;
infile cards4 dsd dlm=';';
input v @@;
cards4;
1; 2; 3; 4; 5;
;;;;
run;
You can use double trailing @ to read multiple obs from one record.
data a;
infile cards4 dsd dlm=';';
input v @@;
cards4;
1; 2; 3; 4; 5;
;;;;
run;
That's a good approach. You might find it necessary to include blanks as delimiters as well:
dlm='; '
This is very cool, thanks. I had forgotten all about @@.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.