Как отсортировать набор данных в SAS, чтобы записи чередовались? - PullRequest
1 голос
/ 18 ноября 2010

Предположим, у меня есть набор данных:

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", а затем рекомбинировать на шаге данных таким образом, чтобы они чередовались /alternate.

Есть идеи? Благодарю.

1 Ответ

7 голосов
/ 18 ноября 2010
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;
...