This is a case of you need to reshape your data somewhat to get the result that you want.
I am afraid that your data are actually character values which will complicate things because of sort orders but I am going to provide an example with numeric values in the scale to avoid having to do a LOT of extra typing.
Best with any question is to provide example data of what you currently have in the form of a data step so we can see immediately the characteristics of all the variables and have something to work with.
Here is a brief example with a 5-value.
data example;
input v1-v3;
label
v1='Question 1'
v2='Question 2'
v3='Question 3'
;
datalines;
1 2 3
1 3 5
1 1 1
2 2 4
2 2 5
3 3 1
3 1 2
3 2 2
4 5 1
4 4 2
4 4 5
5 5 5
5 1 1
5 1 2
5 3 3
;
data need;
set example;
array vars (*) v1-v3;
do i= 1 to dim(vars);
name = vname(vars[i]);
label= vlabel(vars[i]);
value= vars[i];
output;
end;
keep name value label;
run;
proc format;
value lickert
1 = 'Not important at all'
2 = 'Somewhat not imporant'
3 = 'Neutral'
4 = 'Somewhat important'
5 = 'Very important'
;
run;
proc tabulate data=need;
class name value label;
format value lickert.;
table name=' ',
value='Scale'*rowpctn=' '
;
table label=' ',
value='Scale'*rowpctn=' '
;
run;
The data step is to have an example of data. You can copy this into your editor and run.
The second data step reshapes the data in the form needed for proc tabulate or report to make the report you want. There needs to be a variable to hold the row heading and single variable for the column heading values associated with each row for the table you want. So I use functions Vname and Vlabel to get the text of the variable name and label into new variables using an Array to reduce repeated code. I provide a label and show how to use that to make a slightly "nicer" table in proc tabulate.
If there are other variables you need to include for the table make sure they are on the KEEP statement in the Need data step.
I also create a custom format to display my numeric scale with meaningful text for all the values.
You can suppress the variable or statistic name/label from appearing in the table by using an empty quoted string like Varname=' ' .
If you happen to have a code like 99='Not answered' in your data and only want the answer scale values to appear in this table then in the in Need data set you would exclude them with something like:
data need;
set example;
array vars (*) v1-v3;
do i= 1 to dim(vars);
if vars[i] ne 99 then do;
name = vname(vars[i]);
label= vlabel(vars[i]);
value= vars[i];
output;
end;
end;
keep name value label;
run;