Ich möchte die Daten x
(hier: 1:12) nach den Sektoren sec
und Teilsektoren ssec
sortieren. Unten sehen Sie ein Beispiel, wie dies gemacht werden kann. Die Frage ist, ob das eleganter gemacht werden kann (vielleicht mit einer Base-R-Funktion/ohne zusätzliche Pakete)? Wie werden Daten nach Sektoren und Teilsektoren sortiert?
## Data
set.seed(17)
(sec <- sample(rep(LETTERS[1:3], each = 4))) # 3 sectors
(ssec <- rep(sample(1:4, 12, replace = TRUE))) # 4 subsectors
x <- 1:12 # data to sort according to increasing sectors and subsectors
## Sort according to sectors
ord <- order(sec)
x. <- x[ord]
sec. <- sec[ord]
ssec. <- ssec[ord]
## Sort according to subsectors
usec. <- unique(sec.)
x.. <- x.
ssec.. <- ssec.
for(grp in usec.) {
ii <- sec. == grp # indices of components in that sector
ord. <- order(ssec.[ii])
x..[ii] <- x.[ii][ord.]
ssec..[ii] <- ssec.[ii][ord.]
}
## Result
x..
sec.
ssec..
Sie können mehrere Variablen übergeben, um nach der Funktion 'order()' zu sortieren. beispielsweise. 'x [Reihenfolge (Sek., Sek.)]', ist das, was Sie brauchen? – Psidom
* Argh *, wahr ... Sehr gut, danke! Ich glaube ich habe das vor einigen Jahren benutzt und dann vergessen ... hatte das Gefühl, dass es eine elegantere Lösung gab :-) Danke nochmal. –
@Psidom, warum nicht eine offizielle Antwort geben? – gung