0
セクタsec
とサブセクタssec
に従ってデータx
(ここでは1:12)をソートしたいと思います。以下は、これをどのように行うことができるかを示す例です。疑問はこれがより優雅に(多分ベースRの機能/追加のパッケージを使用しないで)行うことができるかどうかです? base
Rからセクタとサブセクタに応じてデータを並べ替える方法は?
## 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..
複数の変数を渡して、 'order()'関数にソートすることができます。例えば。 'x [order(sec、ssec)]'、これはあなたが必要とするものですか? – Psidom
* Argh *、true ...非常に良い、ありがとう!私は数年前にそれを使い、それから忘れてしまったと思います...もっと洗練された解決策があると感じました:-)もう一度おねがいします。 –
@Psidom、それを正式な答えにしてみませんか? – gung