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

如何在SAS中对数据集进行排序以使记录交错?,sas,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

假设我有一个数据集:

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 sort选项会执行“交替”排序,因此我可能必须“按控制”对数据集进行子集,然后在数据步骤中以这样一种方式进行重新组合,以使它们交错/交替


有什么想法吗?谢谢

你能解释一下你想要达到的目标吗?我在第二个数据集中没有看到任何模式。另外,您正在讨论合并两个数据集,而我只看到一个。我更改了标题以反映我的一般问题。注意结果数据集中的第三列(我问题中的第二个代码框)是如何变为c1、c2、c3并重复的。明白我的意思吗?你能解释一下你想要达到的目标吗?我在第二个数据集中没有看到任何模式。另外,您正在讨论合并两个数据集,而我只看到一个。我更改了标题以反映我的一般问题。注意结果数据集中的第三列(我问题中的第二个代码框)是如何变为c1、c2、c3并重复的。明白我的意思吗?太好了,谢谢。我很高兴这个解决方案不需要一堆疯狂的子集。那太好了,谢谢。我很高兴这个解决方案不需要一堆疯狂的子集。
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;