web-dev-qa-db-fra.com

Le binning de style cut () est-il disponible dans dplyr?

Existe-t-il un moyen de faire quelque chose comme une fonction cut() pour regrouper des valeurs numériques dans une table dplyr? Je travaille sur une grande table postgres et je peux actuellement écrire une instruction case dans le sql au début, ou sortir des données non agrégées et appliquer cut(). Les deux ont des inconvénients assez évidents ... les instructions case ne sont pas particulièrement élégantes et extraire un grand nombre d'enregistrements via collect() n'est pas du tout efficace.

33
Michael Williams

Juste pour qu'il y ait une réponse immédiate pour les autres qui arrivent ici via le moteur de recherche, la forme n-breaks de cut est maintenant implémentée comme fonction ntile dans dplyr:

> data.frame(x = c(5, 1, 3, 2, 2, 3)) %>% mutate(bin = ntile(x, 2))
  x bin
1 5   2
2 1   1
3 3   2
4 2   1
5 2   1
6 3   2
38
drhagen