我是R中的data.table的新手并且遇到了以下问题:
我有一个数据表X:
date hour itemName numberOfItem
1: 2014-05-04 00 item-1 54
2: 2014-05-04 00 item-2 42
3: 2014-05-04 00 item-3 33
4: 2014-05-04 00 item-4 31
5: 2014-05-04 00 item-5 30
6: 2014-05-04 00 item-6 28
7: 2014-05-04 00 item-7 27
8: 2014-05-04 00 item-7 26
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
100000: 2014-08-08 23 item-n 24
我必须根据列#34; numberOfItem",根据每个组(日期,小时)的分位数添加新列Rank。我正在使用此代码来实现此目的:
quantfun <- function(x) as.integer(cut(x, quantile(x, probs=0:4/4), include.lowest=TRUE))
X[, Rank:= quantfun(numberOfItem),by="date,hour"]
但我收到了以下错误:
"Error in cut.default(x, quantile(x, probs = 0:4/4), include.lowest = TRUE) :
'breaks' are not unique"
然后我做了一些调试,发现一些分位数是相同的。所以我使用以下代码:
quantfun <- function(x) as.integer(cut(x, unique(quantile(x, probs=0:4/4)), include.lowest=TRUE))
X[, Rank:= quantfun(numberOfItem),by="date,hour"]
但现在我收到了以下错误:
"Error in cut.default(x, unique(quantile(x, probs = 0:4/4)), include.lowest = TRUE) :
invalid number of intervals"
任何帮助将不胜感激。谢谢高级。