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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
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.
Ready to level-up your skills? Choose your own adventure.