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.
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.