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;
Register for SAS Innovate 2025!! The premier event for SAS users, May 6-9 in Orlando FL. Sign up now for the best deals!

sas-innovate-white.png

Missed SAS Innovate in Orlando?

Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.

 

Register now

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
  • 1961 views
  • 4 likes
  • 4 in conversation