Wenn ein einzelnes Kriterium gut bestellt ist, gibt die Rangfunktion die offensichtliche Sache:Gibt es eine einfache Möglichkeit, nach mehreren Kriterien zu sortieren, die Bindungen in R erhalten?
rank(c(2,4,1,3,5))
[1] 2 4 1 3 5
Wenn ein einzelnes Kriterium Bindungen hat, die Rangfunktion (Standardeinstellung) weist durchschnittlich Reihen die Bande:
rank(c(2,4,1,1,5))
[1] 3.0 4.0 1.5 1.5 5.0
Mit der Rangfunktion können Sie nicht nach mehreren Kriterien sortieren, Sie müssen also etwas anderes verwenden. Eine Möglichkeit, dies zu tun, ist die Verwendung von Übereinstimmung und Reihenfolge. Für ein einzelnes Kriterium ohne Bindung sind die Ergebnisse die gleichen:
rank(c(2,4,1,3,5))
[1] 2 4 1 3 5
match(1:5, order(c(2,4,1,3,5)))
[1] 2 4 1 3 5
für ein einziges Kriterium mit Riegeln, jedoch unterscheiden sich die Ergebnisse:
rank(c(2,4,1,4,5))
[1] 2.0 3.5 1.0 3.5 5.0
match(1:5, order(c(2,4,1,4,5)))
[1] 2 3 1 4 5
Die Bindungen werden in einer solchen Art und Weise aufgebrochen, dass die gebundenen Elemente werden in ihrer ursprünglichen Reihenfolge beibehalten und nicht mit gleichen Rängen versehen. Diese Funktion verallgemeinert, natürlich, wenn Sie sortieren auf mehreren Kriterien:
match(1:5, order(c(2,4,1,4,5),c(10,11,12,11,13)))
[1] 2 3 1 4 5
Schließlich stellt sich die Frage: Gibt es eine einfache oder eingebaute, Art und Weise Rang unter Verwendung mehrerer Kriterien der Berechnung, die Beziehungen bewahrt? Ich habe eine Funktion zu tun geschrieben, aber es ist hässlich und scheint lächerlich kompliziert für eine solche grundlegende Funktionalität ...
Was sollen die Ränge für das letzte Beispiel sein? –
'2,0 3,5 1,0 3,5 5,0 'ist das gewünschte Ergebnis. –