drh*_*gen 38
对于通过搜索引擎到达这里的其他人来说,这是一个直接的答案,n-break形式cut现在实现为以下ntile功能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
Run Code Online (Sandbox Code Playgroud)
小智 11
以下适用于dplyr,假设x是我们希望装箱的变量:
# Make n bins
df %>% mutate( x_bins = cut( x, breaks = n )
# Or make specific bins
df %>% mutate( x_bins = cut( x, breaks = c(0,2,6,10) )
Run Code Online (Sandbox Code Playgroud)
我看到这个问题从来没有用tidyverse解决方案更新过,所以我会为后代添加它。
要使用的功能cut_interval来自ggplot2包。它的工作原理类似于base::cut但它在标记起点和终点方面比base我的经验中的函数做得更好,因为cut在每一端增加了 0.1% 的范围。
data.frame(x = c(5, 1, 3, 2, 2, 3)) %>% mutate(bin = cut_interval(x, n = 2))
x bin
1 5 (3,5]
2 1 [1,3]
3 3 [1,3]
4 2 [1,3]
5 2 [1,3]
6 3 [1,3]
Run Code Online (Sandbox Code Playgroud)
您还可以使用 指定 bin 宽度cut_width。
data.frame(x = c(5, 1, 3, 2, 2, 3)) %>% mutate(bin = cut_width(x, width = 2, center = 1))
x bin
1 5 (4,6]
2 1 [0,2]
3 3 (2,4]
4 2 [0,2]
5 2 [0,2]
6 3 (2,4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11935 次 |
| 最近记录: |