如何在SAS中对数据集进行排序以使记录交错?

时间:2010-11-18 16:41:00

标签: sas

假设我有一个数据集:

data animals;
   input animal  $
         group   $
         control $;
datalines;
dog A c1
dog B c1
dog C c1
dog D c2
dog E c2
dog F c2
dog G c3
dog H c3
dog I c3
;
run;

我希望以这样的方式对其进行排序,使得结果数据集看起来像:

dog A c1
dog D c2
dog G c3
dog B c1
dog E c2
dog H c3
dog C c1
dog F c2
dog I c3

我没有看到任何可以进行“交替”排序的proc排序的特殊选项,所以我可能必须将我的数据集“BY控制”进行子集化,然后在数据步骤中以这样的方式重新组合它们交错/备用。

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:7)

proc sort data= animals out= animals2;
    by control group;
run;

data animals2;
    set animals2;
    by control;
    retain orderWithinControlType;
    if first.control then orderWithinControlType = 1;
    else orderWithinControlType +1;
run;

proc sort data= animals2 out= animals3;
    by orderWithinControlType control;
run;

proc print data= animals3;
run;