2010-11-18 5 views
1

Angenommen, ich habe einen Datensatz:Wie wird eine Datenmenge in SAS sortiert, so dass Datensätze verschachtelt werden?

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; 

Ich würde das gerne so sortiert werden, dass die resultierende Datenmenge wie folgt aussieht:

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 

ich für proc spezielle Optionen nicht sehen Sortierung, die eine "alternierende" Sortierung durchführt, so dass ich wahrscheinlich meine Datenmenge "BY control" unterteilen muss, um dann in einem Datenschritt so zu rekombinieren, dass sie verschachtelt/alterniert werden.

Irgendwelche Ideen? Vielen Dank.

+0

Können Sie mehr über das, was Sie erreichen möchten, erklären? Ich sehe kein Muster im zweiten Datensatz. Sie sprechen auch über die Kombination von zwei Datensätzen, während ich nur einen sehe. – Aniko

+0

Ich änderte den Titel, um meine allgemeine Frage zu reflektieren. Beachten Sie, wie die dritte Spalte in der resultierenden Datenmenge (die zweite Code-Box in meiner Frage) c1, c2, c3 und wiederholt wird. Verstehst du, was ich meine? – Banjer

Antwort

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

Das ist großartig, danke. Ich bin froh, dass diese Lösung keine verrückten Teilmengen erfordert. – Banjer

Verwandte Themen