Sas 将列向右移动
我有一个SAS数据集,如下所示:Sas 将列向右移动,sas,Sas,我有一个SAS数据集,如下所示: Month Col1 Col2 Col3 Col4 200801 11 2 3 20 200802 5 9 4 10 . . . . . . . . . . . . . . . 201212 3 34 1 0 我想通过将每行的Col1-Col4列值向右移动来创建一个数据集。它看起来将沿对角线移动 Month
Month Col1 Col2 Col3 Col4
200801 11 2 3 20
200802 5 9 4 10
. . . . .
. . . . .
. . . . .
201212 3 34 1 0
我想通过将每行的Col1-Col4列值向右移动来创建一个数据集。它看起来将沿对角线移动
Month Col1 Col2 Col3 Col4 Col5 Col6 Col7 . . . . . . . Coln
200801 11 2 3 20
200802 . 5 9 4 10
. . . . .
. . . . .
. . . . .
201212 . . . . . . . . . 3 34 1 0
有人能建议我怎么做吗
谢谢 首先,如果你可以避免这样做,就这样做。这是一种非常稀疏的数据存储方式,将涉及大型数据集(至少肯定使用选项COMPRESS),并且通常可以很好地使用类变量进行处理 如果您确实必须这样做,
PROC TRANSPOSE
是您的朋友。虽然这在数据步骤中是可能的,但在PROC转置中它不那么混乱,也更灵活
首先,制作一个完全垂直的数据集(month+colname+colvalue):
在该数据步骤中,您将在colname
中创建最终列名,并将其设置为转置。如果您的数据与上述数据不同(特别是,如果您的数据由其他数据分组),N可能不起作用,您可能需要执行一些逻辑(例如计算与200801的差异)来计算col#
然后,proc转置:
proc transpose data=pre_t out=want;
by month;
id colname;
var value;
run;
瞧,你应该得到你想要的。确保正确排序,以便按预期顺序获得输出
proc transpose data=pre_t out=want;
by month;
id colname;
var value;
run;