Wie man schnell Gruppen (Quartile, Dezile, etc.) bildet, indem man die Spalte (n) in einem Datenrahmen anordnet

Ich sehe eine Menge von Fragen und Antworten re order und sort. Gibt es etwas, die möglichen Vektoren oder data-frames in Gruppierungen (wie z.B. Quartile oder deciles)? Ich habe eine "manuelle" Lösung, aber es gibt wahrscheinlich eine bessere Lösung, group-getestet.

Hier ist mein Versuch:

temp <- data.frame(name=letters[1:12], value=rnorm(12), quartile=rep(NA, 12))
temp
#    name       value quartile
# 1     a  2.55118169       NA
# 2     b  0.79755259       NA
# 3     c  0.16918905       NA
# 4     d  1.73359245       NA
# 5     e  0.41027113       NA
# 6     f  0.73012966       NA
# 7     g -1.35901658       NA
# 8     h -0.80591167       NA
# 9     i  0.48966739       NA
# 10    j  0.88856758       NA
# 11    k  0.05146856       NA
# 12    l -0.12310229       NA
temp.sorted <- temp[order(temp$value), ]
temp.sorted$quartile <- rep(1:4, each=12/4)
temp <- temp.sorted[order(as.numeric(rownames(temp.sorted))), ]
temp
#    name       value quartile
# 1     a  2.55118169        4
# 2     b  0.79755259        3
# 3     c  0.16918905        2
# 4     d  1.73359245        4
# 5     e  0.41027113        2
# 6     f  0.73012966        3
# 7     g -1.35901658        1
# 8     h -0.80591167        1
# 9     i  0.48966739        3
# 10    j  0.88856758        4
# 11    k  0.05146856        2
# 12    l -0.12310229        1

Gibt es eine bessere (sauberere/schnellere/ein-line-Ansatz)? Danke!

InformationsquelleAutor der Frage Richard Herron | 2010-11-08

Schreibe einen Kommentar