Help using Base SAS procedures

compress specific sequence of chars

Reply
Contributor
Posts: 35

compress specific sequence of chars

Hey,

I was give a bunch of data sets that have been reworked to include a prefix on the variable name. I have a loop written to remove the prefix but the problem I'm encountering is the compress function is removing all characters within the prefix from the var name. I'd like it to remove the specific sequence of the letters and not all the letters. Is it possible to do this?

The prefix in all of these example is "INF_"

InputCurrent_Result

Desired_Result

INF_FINANCEACEFINANCE
INF_INFOOINFO
INF_CASTCASTCAST

 

Not all of the variables in the data set have the prefix, that is why I've attempted to do this using the compress function.

Thanks!

Contributor
Posts: 35

Re: compress specific sequence of chars

Found out how to do this using the TRANWRD function.

Super User
Super User
Posts: 7,413

Re: compress specific sequence of chars

Yep, just be careful though as if you have INF_INFO and you do a tranwrd(...,'INF','') then you would end up with _O.  If you know the prefix is INF_ first three characters, it could be beneficial to use substr, e.g. if substr(...,1,4)='INF_' then ...=substr(...,4);

Super User
Super User
Posts: 6,502

Re: compress specific sequence of chars

Use the TRANSTRN() function to replace the string INF_ with nothing.

desired_result = transtrn(input,'INF_',trimn(' '));

Of if you know the values are always at the beginning of the string then use SUBSTR.

desired_result = input ;

if desired_result =: 'INF_' then desired_result = substr(desired_result,5) ;

Ask a Question
Discussion stats
  • 3 replies
  • 235 views
  • 0 likes
  • 3 in conversation