0

我有一个 data.frame,其中有一列的值范围从 0 到 50.000。我想为此数据创建 5 个类别,以便将其绘制在分类直方图中。

我想要做的是创建一个列,告诉我这个值属于哪个类别以便绘制它。例如,我决定创建以下类别: [1,3] (3,6] (6,12] (12,30] (30,50000]

这可能吗?有更简单的方法吗?我通常使用 ggplot2 库进行绘图。

提前致谢。

4

1 回答 1

1

?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]

如果要为结果因子赋予不同的标签,可以更改结果因子的水平。

于 2012-04-27T13:44:01.810 回答