Doesn't work is awful vague. Are there errors in the log?: Post the code and log in a code box opened with the {i} to maintain formatting of error messages. No output? Post any log in a code box. Unexpected output? Provide input data in the form of data step code pasted into a code box, the actual results and the expected results. Instructions here: https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-dat... will show how to turn an existing SAS data set into data step code that can be pasted into a forum code box using the {i} icon or attached as text to show exactly what you have and that we can test code against.
BTW you have a couple of issues that are admittedly newbie issues. SAS, unlike many general programming languages, has FUNCTIONS for a number of statistics such as MEAN, STD, SUM.
If you have missing values for any of the variables when you do A+B+C then the result will be missing. This is intentional documented behavior of the + operator. If you might have a missing value but want the sum of the non-missing values then use SUM(A,B,C).
So you may want one of either
AvgSales= sum(Mon , Tues , Wed , Thurs , Fri)/5;
if you want average per day sales
or perhaps
AvgSales= mean(Mon, Tues, Wed, Thurs, Fri);
if you want average sales per day for the days with sales.
The missing value is a numeric value for missing when using the period or dot. You should not enclose it quotes.
if (AvgSales = '.') then Group = N/A;
Should be throwing LOTS of errors because you probably do not have a variable named N/A and likely are intending to create a text variable named group with the value of "N/A" Which would be done with
if (AvgSales = .) then Group = 'N/A';
Similarly ALL the values of Group need to be inside quotes. You also will have an issue I the Group variable not having a defined length. So the first use in the code of Group = 'N/A' would set the length to 3 characters and the remaining values would be truncated.
You need to specify a length for character variables before use in many cases to prevent this using the LENGTH statement before the variable is used in the code.
Length Group $ 7; creates a variable of 7 characters.
Similar with your Region variable. Those should be character values in quotes instead of just South or North.
There is another comparison operator called IN that allows you to compare multiple values to simplify some of the code:
Instead of
if Store = 110 then region = 'South';
else if Store = 111 then region = 'South;'
else if Store = 112 then region = 'North';
else if Store = 113 then region = 'North';
else if Store = 114 then region = 'North';
You can use
if Store in (110 111) then region='South';
else if Store in (112 113 1140 then region = 'North';
A slightly more advanced approach is to create a custom format to assign text based on a single variable value.
... View more