data money; infile datalines dlm='@'; input Name $ Salary DOLLAR12.2 Bonus DOLLAR12.2 Age; datalines; Harry@$50,000.00@$3,500.00@45 Larry@$30,000.00@$10,500.00@55 Jerry@$1,000,000.00@$100,500.00@21 ; proc print data = money; run; proc contents data=money; run;
So I was running the above code and was expecting the '@' symbol to act as a delimiter, however that doesn't seem to be the case. Can someone help me UNDERSTAND what's wrong? Just to note, I'm just experimenting with SAS to get better at it. The output I get is below:
Obs Name Salary Bonus Age 1 Harry . . . 2 Larry . . . 3 Jerry 1000000 . 0
Thanks much!!
All you need is mixed input style
data money;
infile datalines dlm='@';
input Name $ Salary :DOLLAR12.2 Bonus :DOLLAR12.2 Age;
datalines;
Harry@$50,000.00@$3,500.00@45
Larry@$30,000.00@$10,500.00@55
Jerry@$1,000,000.00@$100,500.00@21
;
proc print data = money;
run;
when you prefix the informat with colon, the character field is extracted before the informat is applied.
All you need is mixed input style
data money;
infile datalines dlm='@';
input Name $ Salary :DOLLAR12.2 Bonus :DOLLAR12.2 Age;
datalines;
Harry@$50,000.00@$3,500.00@45
Larry@$30,000.00@$10,500.00@55
Jerry@$1,000,000.00@$100,500.00@21
;
proc print data = money;
run;
when you prefix the informat with colon, the character field is extracted before the informat is applied.
Oh! Thanks! It's working as expected now.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.