我需要使用数组将宽数据集转置为窄数据集,但是我不确定如何。宽数据集如下所示:
id name t1 t2 t3 t4 t5 t6
11 Jack 79 83 87 70 98 161
12 John 89 73 87 99 100 170
13 Juan 99 93 93 99 99 186
And I need the output to look like this:
11 Jack F1 79
11 Jack F2 83
11 Jack F3 87
11 Jack F4 70
11 Jack Q1 98
11 Jack G1 161
12 John F1 89
12 John F2 73
12 John F3 87
12 John F4 99
12 John Q1 100
12 John G1 170
13 Juan F1 99
13 Juan F2 93
13 Juan F3 93
13 Juan F4 99
13 Juan Q1 99
13 Juan G1 186
数组超出了我的专业知识,因此我需要一些帮助。
答案 0 :(得分:0)
这是一个快速的解决方案:
data have;
input id name $ t1 t2 t3 t4 t5 t6;
cards;
11 Jack 79 83 87 70 98 161
12 John 89 73 87 99 100 170
13 Juan 99 93 93 99 99 186
;
run;
data want;
set have;
array char(*) t1-t6;
array name1(*) $ _f1 _f2 _f3 _f4 _q1 _g1 ("F1", "F2", "F3", "F4", "Q1", "G1") ;
do i = 1 to dim(char);
var1 = name1(i);
var2 = char(i);
output;
end;
drop i t1-t6 _:;
run;