在Data表中的每个组中为Rank添加一个新列

时间:2014-09-10 12:13:38

标签: r data.table

我是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"

任何帮助将不胜感激。谢谢高级。

0 个答案:

没有答案