我有一个 data.frame,其中有一列的值范围从 0 到 50.000。我想为此数据创建 5 个类别,以便将其绘制在分类直方图中。
我想要做的是创建一个列,告诉我这个值属于哪个类别以便绘制它。例如,我决定创建以下类别: [1,3] (3,6] (6,12] (12,30] (30,50000]
这可能吗?有更简单的方法吗?我通常使用 ggplot2 库进行绘图。
提前致谢。
见?cut
。这是一个例子:
set.seed(42)
dat <- data.frame(Values = sample.int(50000, size = 100))
## create factor indicating which categoriesy data are in
grps <- with(dat, cut(Values, breaks = c(1,3,6,12,30,50000)))
这给出了:
> head(grps)
[1] (30,5e+04] (30,5e+04] (30,5e+04] (30,5e+04] (30,5e+04] (30,5e+04]
Levels: (1,3] (3,6] (6,12] (12,30] (30,5e+04]
> table(grps)
grps
(1,3] (3,6] (6,12] (12,30] (30,5e+04]
0 0 1 0 99
如果您希望在数据框中使用它,请尝试以下操作:
dat2 <- within(dat, Groups <- cut(Values, breaks = c(1,3,6,12,30,50000)))
这导致
> head(dat2)
Values Groups
1 45741 (30,5e+04]
2 46853 (30,5e+04]
3 14307 (30,5e+04]
4 41520 (30,5e+04]
5 32085 (30,5e+04]
6 25953 (30,5e+04]
如果要为结果因子赋予不同的标签,可以更改结果因子的水平。