用数组转置数据集

时间:2018-06-29 12:04:01

标签: arrays sas

我需要使用数组将宽数据集转置为窄数据集,但是我不确定如何。宽数据集如下所示:

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

数组超出了我的专业知识,因此我需要一些帮助。

1 个答案:

答案 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;