2010-11-18 2 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 

Я не вижу каких-либо специальных опций для прок сортировка, которая будет делать «чередующийся» вид, поэтому мне, вероятно, придется подмножить мой набор данных «BY control», а затем рекомбинировать на этапе данных таким образом, чтобы они чередовали/чередовали.

Любые идеи? Благодарю.

+0

Не могли бы вы подробнее рассказать о том, чего хотите достичь? Во втором наборе данных я не вижу никакого шаблона. Кроме того, вы говорите о объединении двух наборов данных, в то время как я вижу только один. – Aniko

+0

Я изменил название, чтобы отразить мой общий вопрос. Обратите внимание, как третий столбец в результирующем наборе данных (второе поле кода в моем вопросе) идет c1, c2, c3 и повторяет. Смотрите, что я имею в виду? – Banjer

ответ

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

Thats great, спасибо. Я рад, что это решение не требует кучи сумасшедшего подмножества. – Banjer

Смежные вопросы