A data step can be used to transform your data.
data transposed;
set have;
length
physician disease $ 1 outcome 8
i 8 name $ 32
;
/* variable to be excluded from the dataset transposed */
drop i name p1_a p1_b p1_c p2_a p2_b p2_c;
/* array allows easier processing of the p-variables */
array old[6] p1_a p1_b p1_c p2_a p2_b p2_c;
do i = 1 to dim(old);
/* get the name of the variable, returns p1_b if i = 2 */
name = vname(old[i]);
/* extract physician and disease from the variable name */
physician = substr(name, 2, 1);
disease = substr(name, 4, 1);
/* copy the value to the variabel outcome */
outcome = old[i];
output;
end;
run;
EDIT:
It makes suggesting code much easier if data is presented in usable form. Those tables look nice, but not nice to move to sas-code. This form is usable:
data have;
input id p1_a p1_b p1_c p2_a p2_b p2_c;
datalines;
1 0 0 0 0 0 0
2 0 0 0 0 0 0
3 0 0 0 1 1 0
4 0 0 0 0 0 0
5 0 0 0 0 0 0
6 0 0 1 1 1 0
7 0 0 0 1 1 1
;
run;
Please note that i was to lazy to write down all rows you have in the table.
... View more