/* When I run the following PC SAS program, all the id’s are summarized into the first id, which is wrong. */
data test;
input @ 1 id 15.
@17 amt 1.
;
cards;
098022134104033 1
098022134104033 2
098022134433892 3
098022134433892 4
;
run;
proc summary data=test nway;
class id;
var amt;
output out=test1(drop=_type_ _freq_) sum=;
run;
proc print data=test1;
format id z15.;
run;
I got the following answer from SAS Technical Support:
You need to apply a format in advance to the ID variable as PROC SUMMARY is using BEST12. behind the scenes.
Example:
data test;
input @ 1 id 15.
@17 amt 1.
;
format id z15.;
cards;
...
I got the following answer from SAS Technical Support:
You need to apply a format in advance to the ID variable as PROC SUMMARY is using BEST12. behind the scenes.
Example:
data test;
input @ 1 id 15.
@17 amt 1.
;
format id z15.;
cards;
...
Note that ability to assign variables to groups by use of a format is a very powerful tool in SAS. For example if you have SAS date values you can get summaries by Year, Year and Month, Month, Day of month, Day of year (1-365), Calendar quarter, Year and calendar quarter, day of the week, and week of the year by using a different format for the same variable.
And most of the analysis procedures will group values accordingly.
It's a good idea to keep ID fields as character fields for this reason.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.