Sql 在sas中将单变量表转换为多变量表

Sql 在sas中将单变量表转换为多变量表,sql,sas,Sql,Sas,我正在努力将sas中的单变量表转换为多变量表。我会说‘单变量表’,我的意思是可能仍然是一个多变量表……但这里有一个例子: a、b、c 1001 1 4 8 1001 2 3 7 1002 11 9 6 1002 5 14 15 我希望它像: a1 b1 c1 a2 b2 c3 1001 1 4 8 2 3 7 1002 11 9 6 5 14 15 因为我有数千个I

我正在努力将sas中的单变量表转换为多变量表。我会说‘单变量表’,我的意思是可能仍然是一个多变量表……但这里有一个例子:


a、b、c
1001   1      4      8
1001   2      3      7
1002   11     9      6
1002 5 14 15

我希望它像:


a1 b1 c1 a2 b2 c3
1001  1       4       8       2      3      7
1002 11 9 6 5 14 15

因为我有数千个ID(比如1001-3000)。有没有一个简单的方法可以让我把桌子翻转过来


非常感谢

这不是一个简单的方法,因为您要处理多个值。 您可以对每个值进行3次转置-一次,并通过@jaamor的链接进行合并。或者您可以进行半手动数据步转置。这假定最大计数为2。如果每个ID超过2个,则可以计算最大值并将其放入宏变量中。然后用宏变量替换代码中的2

data want;
set have;
by id;

array _a(2) a1-a2;
array _b(2) b1-b2;
array _c(2) c1-c2;

retain a: b: c:;


if first.id then count=1;
else count+1;

_a(count)=a;
_b(count)=b;
_c(count)=c;

if last.id then output;

 drop a b c count;

run;

每个ID中的记录数是否相同?如果没有,您是否提前知道最大数量?Proc transpose可以做到这一点。这里有一个教程:非常感谢Jaamor!@我想这可能是一个一步的过程。。