Help using Base SAS procedures

Specifying a range of values for a character variable

Reply
Occasional Contributor
Posts: 7

Specifying a range of values for a character variable

I have a variable called "X", it has alphabets, numbers, special characters etc. I need to search for Upper and Lower Case alphabets from a to z and create a flag based on that. Whenever X has a character in it, a variable called flag should have value 1. Writing a if then statement is not an option cause its very long. I need to specify a variable with range of character values from A to Z and the variable flag should be based on that. Please help. Need a solution urgently.

PROC Star
Posts: 7,468

Re: Specifying a range of values for a character variable

I would think that you could write an if statement that includes some of the SAS ANY functions, e.g.: anyalpha, anyalnum, anycntrl, anydigit, anylower, anypunct and anyupper.

Super User
Super User
Posts: 7,039

Re: Specifying a range of values for a character variable

Some examples would clarify the question, but it sounds like you want the INDEXC() function.

flag = indexc(upcase(x),'ABC');

Then FLAG will have the position where A,B or C first appear in X.  You could treat FLAG as a true/false variable if you want.

Or you could convert it to a 0/1 variable by using:

flag = 0 ^= indexc(upcase(x),'ABC');

or

flag = not not indexc(upcase(x),'ABC');

Ask a Question
Discussion stats
  • 2 replies
  • 298 views
  • 3 likes
  • 3 in conversation