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;

 

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

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

View all other training opportunities.

Discussion stats
  • 2 replies
  • 509 views
  • 0 likes
  • 2 in conversation