BookmarkSubscribeRSS Feed
fred777
Calcite | Level 5

So I ran this little piece of code under SAS9.4 M0 and also under M3 and get a different name for the colpctsum variable!

 

proc tabulate data=sashelp.cars out=fred;

   var horsepower;

   class origin;

   table origin,horsepower*colpctsum;

run;

 

Under M0 the var name is: Horsepower_PctSum_0

Under M3 the var name is: Horsepower_PctSum_0_Horsepower

 

This is very unfortunate and is causing us a lot of grief!

 

Is there anything in the release notes that refers to this new behaviour?

 

Thanks

 

3 REPLIES 3
Reeza
Super User

I would definitely contact tech support with this question, if you haven't already. 

bstrac
Calcite | Level 5

We just upgraded from 9.4M2 to 9.4M4 and experienced the same column naming issue when using PROC TABULATE between versions.

 

I know it has been a long time since this post was created but did you find anything out from tech support?

ChrisHemedinger
Community Manager

Here's a SAS note that describes the change.  It was intentional -- to help with name collisions.  But unfortunately it broke your process.

 

More documentation/explanation in this Usage Note 45710: Naming convention for statistics in an output data set created by PROC TAB....

 

Here is a brute-force SAS macro program -- which I dug out of a Tech Support track and which you should definitely test before using in production -- that renames the variables back to the old style, trimming the underscore-number suffix.

 

%macro myrename(dsn=&syslast);
  %let lib=%scan(&syslast,1,%str(.));
  %let mem=%scan(&syslast,2,%str(.));
  proc sql  noprint;
  /* generate a command line : RENAME oldname=newname */
   select catt('rename',' '!!name,'=',substr(name,1,length(name)-index(reverse(trim(name)),'_'))) into:renamelist separated by ";"
   from sashelp.vcolumn where libname=upcase("&lib.") and memname=upcase("&mem.") and (lowcase(name) like '%_pctsum_%' OR lowcase(name) like '%_pctn_%' );
  /* execute this command in proc datasets */
  proc datasets lib=&lib nolist;    modify &mem;    &renamelist;  run;quit;
%mend myrename;
%myrename;
SAS For Dummies 3rd Edition! Check out the new edition, covering SAS 9.4, SAS Viya, and all of the modern ways to use SAS!

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

What is Bayesian Analysis?

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 2150 views
  • 4 likes
  • 4 in conversation