【问题标题】:How to group data by quantile [duplicate]如何按分位数对数据进行分组[重复]
【发布时间】:2018-04-25 07:25:41
【问题描述】:

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

现在我只得到这个...

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

【问题讨论】:

标签: r


【解决方案1】:

如果您只想创建一个新变量,其中每行根据 1 列中的值获得 1、2、3 或 4,您可以这样做:

library(dplyr)

mtcars %>% 
  mutate(quantilegroup = ntile(qsec, 4)) %>% 
  head(6)

   mpg cyl disp  hp drat    wt  qsec vs am gear carb quantilegroup
1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4             1
2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4             2
3 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1             3
4 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1             4
5 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2             2
6 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1             4

【讨论】:

    【解决方案2】:

    查看可重现的示例 - 您需要将 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
    

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2015-05-15
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      相关资源
      最近更新 更多