减少data.table中的break-label冲突

时间:2018-09-07 23:02:04

标签: r data.table finance

我希望您能在这一点上对我有所帮助,因为似乎有些错误。

我使用此代码来计算每年六月的某个变量(MarketValue)的分位数:

Test<- Test[format.Date(Date, "%m")=="06", DecileColumnME := cut(Marketvalue, breaks = quantile(Marketvalue, probs = 0:10/10, na.rm = TRUE),
                                                                           labels = 1:10, right = TRUE), by = Date]

,它正在工作。现在,我想对6月份的数据执行相同的操作,但是这次是针对另一个变量(BEMERATIOLag6Month列中的市售率)。

所以我用

Test2 <- Test2[format.Date(Date, "%m")=="06", DecileColumnBEME := cut(BEMERATIOLag6Month, breaks = quantile(BEMERATIOLag6Month, probs = 0:10/10, na.rm = TRUE),
                                                                  labels = 1:10, right = TRUE), by = Date]

但是这次我得到了错误:

Error in cut.default(BEMERATIOLag6Month, breaks = quantile(BEMERATIOLag6Month,  : 
  lengths of 'breaks' and 'labels' differ

但我不明白为什么会这样? :(这是一个相同的概念,我通过str()检查了两个列(Marketvalue和BEMERATIOLag6Month)都是num。

有人可以帮我吗?

预先感谢

编辑:

我通过使用label = FALSE解决了它。那么它只会返回简单的整数,而不是对我而言很好的因子。但是,我仍然不明白为什么它不像市场价值栏那样工作。

0 个答案:

没有答案