2010-11-18 73 views
1

假设我有一个数据集:如何对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控制”,然后在数据步骤中进行重组,以便它们交错/交替。

任何想法?谢谢。

+0

你能解释一下你想达到什么吗?我在第二个数据集中没有看到任何模式。此外,您正在讨论组合两个数据集,而我只看到一个。 – Aniko 2010-11-18 16:44:49

+0

我改变了标题以反映我的一般问题。注意结果数据集中的第三列(我的问题中的第二个代码框)是如何变为c1,c2,c3并重复的。明白了吗? – Banjer 2010-11-18 17:14:27

回答

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; 
+0

太好了,谢谢。我很高兴这个解决方案不需要一堆疯狂的子集。 – Banjer 2010-11-18 18:43:31

相关问题