BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Hello_there
Lapis Lazuli | Level 10
data have;
infill datalines dsd dlm=",':
input name $ @@;
red, orange, yellow, blue, green, indigo, violet, purple, turquoise, pink
;
run;

data want;
set have;
if name="p " /* what is a function that deals with partial character strings*/
;
run;


Hi, I'm trying to find a function where I can condition a data step to return back only values that match the partial character string?

 

could I receive some assistance? thanks

1 ACCEPTED SOLUTION

Accepted Solutions
Patrick
Opal | Level 21

Like this?

data sample;
  infile datalines dsd dlm=",";
  input name $ @@;
  if upcase(substr(name,1,1))='P';
  datalines;
red, orange, yellow, blue, green, indigo, violet, purple, turquoise, pink
;
run;

 ...or this:


data sample;
  infile datalines dsd dlm=",";
  input name $ @@;
  if upcase(name)=:'P';
  datalines;
red, orange, yellow, blue, green, indigo, violet, purple, turquoise, pink
;
run;

View solution in original post

6 REPLIES 6
HB
Barite | Level 11 HB
Barite | Level 11

There are a lot of ways to do thins i would guess.

I would try

data want;
set have;
match_name = find (name, 'p','i');
if match_name > 0;
drop match_name;
run;

 Returns purple and pink. 

Reeza
Super User

FIND() 

INDEX()

Colon (=:), if looking for matches at the start of strings.

 


@Hello_there wrote:
data have;
infill datalines dsd dlm=",':
input name $ @@;
red, orange, yellow, blue, green, indigo, violet, purple, turquoise, pink
;
run;

data want;
set have;
if name="p " /* what is a function that deals with partial character strings*/
;
run;


Hi, I'm trying to find a function where I can condition a data step to return back only values that match the partial character string?

 

could I receive some assistance? thanks


 

ballardw
Super User

What exactly do you mean by ="p "? That it contains a p anywhere in the string? That the exact string p followed by a space is in the string (which means no matches in your example)? Starts with a p?

 

You really need to show exactly what you expect for the output as there may be several ways and may not match your need.

 

 

Hello_there
Lapis Lazuli | Level 10
Hi, sorry for the confusion.

I'm looking for a function that select the colors that start with "p"
Patrick
Opal | Level 21

Like this?

data sample;
  infile datalines dsd dlm=",";
  input name $ @@;
  if upcase(substr(name,1,1))='P';
  datalines;
red, orange, yellow, blue, green, indigo, violet, purple, turquoise, pink
;
run;

 ...or this:


data sample;
  infile datalines dsd dlm=",";
  input name $ @@;
  if upcase(name)=:'P';
  datalines;
red, orange, yellow, blue, green, indigo, violet, purple, turquoise, pink
;
run;

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 6 replies
  • 1129 views
  • 6 likes
  • 6 in conversation