Help using Base SAS procedures

Multiple Conditional in one colum

Reply
New Contributor
Posts: 3

Multiple Conditional in one colum

Hi all,

I had four conditions to be passed on status variable.

If customer don`t have service 01 then customer should have a status "Other"

If customer  last 6m sales is blank customer should have status "Call BACK"

If customer dont  last 9m sales and in last 6m sales is blank customer should have a status "Gone"

If  customer had sales in the last 6 m and last 9 m then customer should have a status "Active"

I tried to replicate these condition to SAS but at the moment ,I had only the status "others" that work fine and the status "call back" is passed

on to my all customers even though some of them should have a status "gone" or "active".

Below is my attempt to  code the conditions :

if (Service ^= "01") then status = "Others";

else if  (Service = "01") and  ('last 6m sales' <= '0') and ('last 9m sales' <= '0') then Status = "Gone";

else if (Service = "01") and ('last 6m sales' <= '0') then Status = "Call Back";

run;

Here you can see what the output should be.

CustomerServiceSales last 6Sales last 9Status
AO12Call Back
BO232Others
cO111Active
dO1Gone

The only thing I can see it that instead to type <=0 as a condition it should be about looking for missing values?

Thanks in advance.

Contributor
Posts: 30

Re: Multiple Conditional in one colum

Hi ,

Could you please check the query as u have used variable ' last 3m ' in the question and its not there in the output .

New Contributor
Posts: 3

Re: Multiple Conditional in one colum

Hi,

Sorry bad typography I edited the post

Thanks

Jean

Frequent Contributor
Posts: 130

Re: Multiple Conditional in one colum

Assuming in the output table "Sales last 6" is equal to the variable in your IF Statement 'last 6m sales', you need to have an "n" afterwards so SAS can read your variable with the spaces in it.  So, instead of 'last 6m sales'<='0' it should be 'last 6m sales'n<='0'.  I would also look into adding a condition for missing values as you mentioned at the end for the Sales last variables.

Hope that helps!

Derek

Super User
Posts: 10,500

Re: Multiple Conditional in one colum

Is the 01 condition zero and one or letter o and 1? Your example data appears to show both Zero and Capital O. If your data is mixing these which is the condition to search for?

New Contributor
Posts: 3

Re: Multiple Conditional in one colum

Hi

The condition is O1 ,the letter O and 1.

I will edit my example is should be O1  not zero and one.

Thanks

Frequent Contributor
Posts: 130

Re: Multiple Conditional in one colum

Try nested IF statements containing DO statements for efficiency:

Not sure if it's possible to have last 6m sales blank and last 9m sales not blank, but if you have to have last 6m sales to get last 9m sales, then this should work for you:

data want;

set have;

If Service^="O1" then do;

     Status="Others"; end;

Else do;

     If "last 6m sales"n^="" AND "last 9m sales"n="" then Status="Call Back";

     Else if "last 6m sales"n="" AND "last 9m sales"n="" then Status="Gone";

     Else Status="Active"; end;

run;

Ask a Question
Discussion stats
  • 6 replies
  • 289 views
  • 0 likes
  • 4 in conversation