BookmarkSubscribeRSS Feed
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 out=fred;

   var horsepower;

   class origin;

   table origin,horsepower*colpctsum;



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?




Super User

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

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?

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;



Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.

If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website. 

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.

Get the $99 certification deal.jpg



Back in the Classroom!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 4 in conversation