BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
France
Quartz | Level 8

dear all,

 

how can I exclude the specific character for all four variables (i.e., COMPANY_NAME, COMPANY_NAME_1, COMPANY_NAME___SHORT, PREVIOUS_NAME) based on the country code

 

for the following excel.

COMPANY_NAMECOMPANY_NAME_1COMPANY_NAME___SHORTPREVIOUS_NAMEGEOGRAPHIC_DESCR_
NORSK HYDRO ASANORSK HYDRO ASANORSK HYDRO ASANORSK HYDRO ADR (XSQ)NORWAY
SIRTI SPASIRTI SPASIRTI SPASIRTI (XSQ)ITALY
EVC INTERNATIONAL NVEVC INTERNATIONAL NVEVC INTERNATIONAL NVEVC INTL. (XSQ)NETHERLANDS
CARDO ABCARDO ABCARDO ABCARDO (XSQ)SWEDEN
HASLEMERE NVHASLEMERE NVHASLEMERE NV NETHERLANDS
IRO ABIRO ABIRO ABIRO (XSQ)SWEDEN
ALLEANZA ASSICURAZIONI S.P.A.ALLEANZAALLEANZA ASSICUR. ITALY
POLYGRAM N.V.POLYGRAMPOLYGRAM N.V. NETHERLANDS
HEINEKEN NVHEINEKEN NVHEINEKEN N.V. NETHERLANDS
SAMPO OYJSAMPO OYJSAMPO OYJSAMPO 'A' (XSQ)FINLAND

I expect the exclude the specific character if

1) the character is the last character of a 'company name' (i.e., all of these four variables, which are COMPANY_NAME, COMPANY_NAME_1, COMPANY_NAME___SHORT, PREVIOUS_NAME) text.

 

2) it is 'AB' if GEOGRAPHIC_DESCR_ is SWEDEN or Finland,

it is 'SPA' or 'S.P.A' if GEOGRAPHIC_DESCR_ is ITALY,

it is 'NV' or 'N.V' if GEOGRAPHIC_DESCR_ is Netherlands or Belgium or Indonesia or Suriname,

it is 'ASA' if GEOGRAPHIC_DESCR_ is NORWAY,

it is 'OYJ' if GEOGRAPHIC_DESCR_ is FINLAND.

 

Could you please give me some suggestions about this.

thanks in advance.

 

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisNZ
Tourmaline | Level 20

If you prefer to use the scan function:

data NEW;
  COMPANY_NAME   ='POLYGRAM N.V.'  ;
  COMPANY_NAME_1 ='POLYGRAM     '  ;
  GEOGRAPHIC_DESC='NETHERLANDS  '  ;
  if GEOGRAPHIC_DESC='NETHERLANDS' then do;
    call scan(COMPANY_NAME, -1, POSITION, LENGTH,' ');
    if scan(COMPANY_NAME,-1,' ') in ('NV','N.V.') then substr(COMPANY_NAME,POSITION)=' ';
    call scan(COMPANY_NAME_1, -1, POSITION, LENGTH,' ');
    if scan(COMPANY_NAME_1,-1,' ') in ('NV','N.V.') then substr(COMPANY_NAME_1,POSITION)=' ';
  end;
run;

 

View solution in original post

2 REPLIES 2
ChrisNZ
Tourmaline | Level 20

Like this?

data NEW;
  COMPANY_NAME   ='POLYGRAM N.V.'  ;
  COMPANY_NAME_1 ='POLYGRAM     '  ;
  GEOGRAPHIC_DESC='NETHERLANDS  '  ;
  if GEOGRAPHIC_DESC='NETHERLANDS' then do;
    COMPANY_NAME   = prxchange('s/(NV|N\.V\.)$//',1,trim(COMPANY_NAME  ));
    COMPANY_NAME_1 = prxchange('s/(NV|N\.V\.)$//',1,trim(COMPANY_NAME_1));
  end;
run;

COMPANY_NAME COMPANY_NAME_1 GEOGRAPHIC_DESC
POLYGRAM POLYGRAM NETHERLANDS

 

ChrisNZ
Tourmaline | Level 20

If you prefer to use the scan function:

data NEW;
  COMPANY_NAME   ='POLYGRAM N.V.'  ;
  COMPANY_NAME_1 ='POLYGRAM     '  ;
  GEOGRAPHIC_DESC='NETHERLANDS  '  ;
  if GEOGRAPHIC_DESC='NETHERLANDS' then do;
    call scan(COMPANY_NAME, -1, POSITION, LENGTH,' ');
    if scan(COMPANY_NAME,-1,' ') in ('NV','N.V.') then substr(COMPANY_NAME,POSITION)=' ';
    call scan(COMPANY_NAME_1, -1, POSITION, LENGTH,' ');
    if scan(COMPANY_NAME_1,-1,' ') in ('NV','N.V.') then substr(COMPANY_NAME_1,POSITION)=' ';
  end;
run;

 

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

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 2 replies
  • 1066 views
  • 0 likes
  • 2 in conversation