如何根据定义的范围标记数据点?

时间:2018-09-27 09:03:15

标签: r intervals cut

我有一个数据框 df ,我设置了间隔点,这些间隔点保存在矢量 pts 中。现在,我想将数据标记为这些间隔。我尝试使用cut()函数,但总是会得到一个错误,即使我将x转换为数字,它也不是数字。

我的数据框 df

        date    amount
1    2012-07-01 2.3498695
2    2012-08-01 0.6984866
3    2012-09-01 0.9079118
4    2012-10-01 2.8858218
5    2012-11-01 1.2406948
6    2012-12-01 2.3140496
7    2013-01-01 1.5904573
8    2013-02-01 3.2531825
9    2013-03-01 4.2962963
10   2013-04-01 3.3287101
11   2013-05-01 3.7698413
12   2013-06-01 1.4376997
13   2013-07-01 5.0687285
14   2013-08-01 4.4520548
15   2013-09-01 5.5063913
16   2013-10-01 5.5676856
17   2013-11-01 6.2686567
18   2013-12-01 11.021069

我的矢量 pts ,其中列 Min 有间隔点

pts$Min
[1]  3  6 11

我的新数据框应如下所示:

    date     amount      IntervalRange
1    2012-07-01 2.3498695    1
2    2012-08-01 0.6984866    1
3    2012-09-01 0.9079118    1
4    2012-10-01 2.8858218    2
5    2012-11-01 1.2406948    2
6    2012-12-01 2.3140496    2
7    2013-01-01 1.5904573    3
8    2013-02-01 3.2531825    3
9    2013-03-01 4.2962963    3
10   2013-04-01 3.3287101    3
11   2013-05-01 3.7698413    3
12   2013-06-01 1.4376997    4
13   2013-07-01 5.0687285    4
14   2013-08-01 4.4520548    4
15   2013-09-01 5.5063913    4
16   2013-10-01 5.5676856    4
17   2013-11-01 6.2686567    4
18   2013-12-01 11.021069    4

所以,我尝试了这个:

df_cut <- data.frame(as.numeric(df$date), "IntervalRange" = cut(
                                                df,
                                                breaks=pts$Min))

导致此错误消息的原因:

  

cut.default(df,breaks = pts $ Min)中的错误:“ x”必须为数字

我现在的问题是

  1. 为什么我会收到此错误消息?我已经将其更改为数字...
  2. 在使用具有其他间隔点的其他数据集时,是否还可以通过使用 cut() findIntervals()函数来实现所需的输出?

1 个答案:

答案 0 :(得分:1)

您在cut函数中缺少值(或列)。您的命令应为

data.frame(as.numeric(df$date), "IntervalRange" = cut(df$amount,  breaks=pts$Min))

希望这会有所帮助!