Did you try the bit of code I suggested earlier?
I strongly suggest getting all of the values into one set of variables before attempting to recode, such as your race_eth variable.
Note that if your variables q2___1-q2___10 have more than one with the value of 1 then your Race_eth variable using this code will only reflect the value of the last variable that had the value of one. Is that the desired behavior?
I am not sure exactly what you were attempting with
do i= 148;
if languages1=2 then Spanish (i) = English (i);
end.
with a single value of i it would only process one of the variables in each array, assuming there are at least 148 variables. Were you wanting to place the values of the English array into the Spanish variable?
The error about implicit, I think this comes from Languages1, and explicit (these would be the Spanish and English array references makes me think that there is not actually an existing variable named Languages1 in the data set. So SAS thinks it might refer to another element that might belong in an array.
Again, recommending get all the values into one set of variables, whether the English or Spanish, then your Race_sum would be better coded as:
race_sum = sum(of q2___1 - q2___10);
Better in two senses: First the more obvious that the code is much shorter and easier to follow. Second is if any of the variables listed in a series + operations is missing then the result will be missing.
Your error with
70 proc freq label;
-----
22
202
is because LABEL is not a valid Procedure statement option.
This error:
74 proc freq ;
75 table race_sum * q2___1 * q2___2 * q2___3 * q2___4 * q2___5 * q2___6 * q2___7 * q2___8 *
75 ! q2___9 * q2___10/list missing;
ERROR: Variable RACE_SUM not found.
76 run;
Is because you have the Race_sum (and race_eth) assignment code commented out, appearing between /* */ in the data step. So those statements do not execute and the variables are not calculated.
Hint for the long run: Even though SAS will use the last data set to run most procedures with you really want to get into a habit of specifying which exact data set to use. There are times when for debugging purposes you may intend to run proc freq or another procedure against a specific set but forget that it was not the last one created, which is the one used. You can end up spending a lot of time trying to figure out where 3 records went or why variable XXX is not re-coding correctly when the set you think Proc Freq is using is AAA but data set BBB was the last created.
... View more