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

Can we use string as delimiter.

 

like . scan(word,"AND",1);

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

@Aman4SAS wrote:

Can we use string as delimiter.

 

like . scan(word,"AND",1);


See it this gives you enough to get started.

data example;
   x="This is a phrase with the word and embedded";
  newx = tranwrd(x,' and ','+');
  y=scan(newx,1,'+');
run;

The spaces around the ' and ' are there to get and as word so it does not get replaced inside words like "sand".

 

Use a character such as the + that 1) will not appear in your data and 2) is not a normal delimiter for the scan function so you get breaks where you expect it.

TRANWRD function is case sensitive. You may need either multiple passes through TRANWRD if you need " And " as well as " and " " AND " and so forth. Or UPCASE or LOWCASE the whole string.

View solution in original post

2 REPLIES 2
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Have you read the manual:

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000214639.htm

Particularly:

charlist

specifies an optional character expression that initializes a list of characters. This list determines which characters are used as the delimiters that separate words. The following rules apply:

  • By default, all characters in charlist are used as delimiters.

  • If you specify the K modifier in the modifier argument, then all characters that are not in charlist are used as delimiters.

Tip: You can add more characters to charlist by using other modifiers.

 

 

The string you provide is not used "as is", any place where A, N, or D is found is a delimiter.  Use substr() and findw() 

ballardw
Super User

@Aman4SAS wrote:

Can we use string as delimiter.

 

like . scan(word,"AND",1);


See it this gives you enough to get started.

data example;
   x="This is a phrase with the word and embedded";
  newx = tranwrd(x,' and ','+');
  y=scan(newx,1,'+');
run;

The spaces around the ' and ' are there to get and as word so it does not get replaced inside words like "sand".

 

Use a character such as the + that 1) will not appear in your data and 2) is not a normal delimiter for the scan function so you get breaks where you expect it.

TRANWRD function is case sensitive. You may need either multiple passes through TRANWRD if you need " And " as well as " and " " AND " and so forth. Or UPCASE or LOWCASE the whole string.

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
  • 1727 views
  • 2 likes
  • 3 in conversation