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.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
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.