如何按分位数分组数据

时间:2018-04-25 07:25:41

标签: r

如果我有一个客户购物费用的数据框架 我需要通过分位数将客户划分为4组, 我应该怎么写R代码?

现在我只能得到这个......

quantile(cus.df$Fee, probs=seq(from=0,to=1,by=0.2))

2 个答案:

答案 0 :(得分:0)

查看可重现的示例 - 您需要将dplyr::group_bycut结合使用 - 中断由quantile(...)

定义
library(dplyr)
mtcars %>% 
  group_by(G = cut(mpg, breaks=quantile(mpg, probs=seq(0, 1, by=0.2))))

# A tibble: 32 x 12
# Groups: G [6]
     # mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb G         
   # <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <fct>     
 # 1  21.0    6.  160.  110.  3.90  2.62  16.5    0.    1.    4.    4. (17.9,21] 
 # 2  21.0    6.  160.  110.  3.90  2.88  17.0    0.    1.    4.    4. (17.9,21] 
 # 3  22.8    4.  108.   93.  3.85  2.32  18.6    1.    1.    4.    1. (21,24.1] 
 # 4  21.4    6.  258.  110.  3.08  3.22  19.4    1.    0.    3.    1. (21,24.1] 
 # 5  18.7    8.  360.  175.  3.15  3.44  17.0    0.    0.    3.    2. (17.9,21] 
 # 6  18.1    6.  225.  105.  2.76  3.46  20.2    1.    0.    3.    1. (17.9,21] 
 # 7  14.3    8.  360.  245.  3.21  3.57  15.8    0.    0.    3.    4. (10.4,15.~
 # 8  24.4    4.  147.   62.  3.69  3.19  20.0    1.    0.    4.    2. (24.1,33.~
 # 9  22.8    4.  141.   95.  3.92  3.15  22.9    1.    0.    4.    2. (21,24.1] 
# 10  19.2    6.  168.  123.  3.92  3.44  18.3    1.    0.    4.    4. (17.9,21] 
# ... with 22 more rows

答案 1 :(得分:0)

如果你只是想创建一个新变量,每行取一个1,2,3或4,取决于1列中的值,你可以这样做:

{{1}}