web-dev-qa-db-ja.com

dplyrでcut()スタイルのビニングは利用できますか?

dplyrテーブルの数値をビニングするためにcut()関数のようなことをする方法はありますか?私は大きなpostgresテーブルで作業しており、現在、SQLで最初にcaseステートメントを書き込むか、未集計データを出力してcut()を適用できます。どちらにもかなり明らかな欠点があります... caseステートメントは特にエレガントではなく、collect()を介して多数のレコードを取得することはまったく効率的ではありません。

33

検索エンジンを介してここに到着する他の人に即座の答えがあるように、cutのn-breaks形式はntiledplyr関数として実装されています:

> 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