title: How to quickly form groups (quartiles, deciles, etc) by ordering column(s) in a data frame
body: <p>I see a lot of questions and answers re <code>order</code> and <code>sort</code>. Is there anything that sorts vectors or data frames into groupings (like quartiles or deciles)? I have a "manual" solution, but there's likely a better solution that has been group-tested.</p>
  
  <p>Here's my attempt:</p>
  
  <pre><code>temp &lt;- 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 &lt;- temp[order(temp$value), ]
  temp.sorted$quartile &lt;- rep(1:4, each=12/4)
  temp &lt;- 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
  </code></pre>
  
  <p>Is there a better (cleaner/faster/one-line) approach? Thanks!</p>