Dear Sas experts,
I am trying to create a simple dataset with 2 char variables, one of each is actually a long string with unpredicted length.
data myLine;
infile datalines delimiter='|';
input myLine $75. lineType $20.;
datalines;
L1. This is my very long line of unpredicted length. | line_one
L2. This is my second very long line of unpredicted length.| line_simple
L3. This is my third, third, third very long line of unpredicted length.| line_another
;
run;
However, the dataset looks weird, e.g.
myLine lineType
This is my very long line of unpredicted length. | line one
The results really depends on the length of the first column (myLine). The numbers .75 and .20 are arbitrary. When I put no numbers (just $) the lines are cut after 8 symbols, I believe.
What is the right way to allow unlimited length (or at least limited by 200 symbols) for the line and to create reliable column values.
Thank you
input myLine $75. lineType $20.;
This is called formatted input. SAS will read exactly the number of characters into a column that are specified, regardless of delimiters.
If you want to specify maximum lengths for strings, but have variable lengths in the data (and want to honor the delimiters), do this:
informat myLine $75. lineType $20.;
input myLine lineType;
Use informats to specify the maximum length possible. Yes, the default length for a SAS character variable is 8.
data myLine;
informat myline $200. lineTYpe $20.;
infile datalines delimiter='|';
input myLine lineType ;
datalines;
L1. This is my very long line of unpredicted length. | line_one
L2. This is my second very long line of unpredicted length.| line_simple
L3. This is my third, third, third very long line of unpredicted length.| line_another
;
run;
input myLine $75. lineType $20.;
This is called formatted input. SAS will read exactly the number of characters into a column that are specified, regardless of delimiters.
If you want to specify maximum lengths for strings, but have variable lengths in the data (and want to honor the delimiters), do this:
informat myLine $75. lineType $20.;
input myLine lineType;
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.