如果我有一个客户购物费用的数据框架 我需要通过分位数将客户划分为4组, 我应该怎么写R代码?
现在我只能得到这个......
quantile(cus.df$Fee, probs=seq(from=0,to=1,by=0.2))
答案 0 :(得分:0)
查看可重现的示例 - 您需要将dplyr::group_by
与cut
结合使用 - 中断由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}}