Я думаю, вам просто нужно включить HEIGHT в оператор BY.
Сначала давайте преобразуем ваши данные в качестве примера в набор данных SAS.
data have ;
input Height $ Front Middle Rear ;
cards;
Low 125 185 126
Low 143 170 136
Medium 141 176 128
Medium 137 161 133
High 129 157 149
High 141 152 137
;
Теперь давайте добавим идентификатор для уникальной идентификациикаждый ряд.Обратите внимание, что если вы действительно читаете данные с помощью шага данных, вы можете сделать это на том же шаге, который читает данные.
data with_id ;
row_num+1;
set have;
run;
Теперь мы можем транспонировать.
proc transpose data=with_id out=want (rename=(_name_=Location col1=Price));
by row_num height ;
var front middle rear ;
run;
Результаты:
Obs row_num Height Location Price
1 1 Low Front 125
2 1 Low Middle 185
3 1 Low Rear 126
4 2 Low Front 143
5 2 Low Middle 170
6 2 Low Rear 136
7 3 Medium Front 141
8 3 Medium Middle 176
9 3 Medium Rear 128
10 4 Medium Front 137
11 4 Medium Middle 161
12 4 Medium Rear 133
13 5 High Front 129
14 5 High Middle 157
15 5 High Rear 149
16 6 High Front 141
17 6 High Middle 152
18 6 High Rear 137