Desktop productivity for business analysts and programmers

Help with SAS case when condition

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 82
Accepted Solution

Help with SAS case when condition

In the below code:

case when strip(col1) then "DIGIT"

when anyalpha( strip(col1)) then "ALPHA"

else "DIGIT"

I am confused about the first statement. Under what condition will it evaluate to 'DIGIT'? When col1 = null? I understand the second case....if col1 has an alphabet, it will evaluate to "ALPHA"


Accepted Solutions
Solution
‎05-07-2014 05:24 PM
Trusted Advisor
Posts: 1,056

Re: Help with SAS case when condition

It makes very little sense to me. You don't say whether col1 is character or numeric, but when I try it with a numeric variable it fails with

ERROR: Function STRIP requires a character expression as argument 1.

so we'll assume that col1 is character.

If it's anything other than blank, the first when clause will be satisfied, and the result will be "DIGIT". If it's blank, the second when clause won't be satisfied, and it will fall through to the else clause, and the result will be "DIGIT".

I can't figure out how to get a result of "ALPHA"!

Tom

View solution in original post


All Replies
Regular Contributor
Posts: 217

Re: Help with SAS case when condition

Eagles,

The Strip(function) works on character variables.  If you were to assume that any value that does not have an alpha, is a numeric, then this code should work for you.

case

   when  anyalpha( strip(col1)) then "ALPHA"

   else "DIGIT" end as variable_type

Solution
‎05-07-2014 05:24 PM
Trusted Advisor
Posts: 1,056

Re: Help with SAS case when condition

It makes very little sense to me. You don't say whether col1 is character or numeric, but when I try it with a numeric variable it fails with

ERROR: Function STRIP requires a character expression as argument 1.

so we'll assume that col1 is character.

If it's anything other than blank, the first when clause will be satisfied, and the result will be "DIGIT". If it's blank, the second when clause won't be satisfied, and it will fall through to the else clause, and the result will be "DIGIT".

I can't figure out how to get a result of "ALPHA"!

Tom

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 837 views
  • 0 likes
  • 3 in conversation