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.
⏰
Today is the last day to save with the early bird rate! Register today for just $695 - $100 off the standard rate.
Plus, 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.