Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 为数据表中每个组内的秩添加一个新列_R_Data.table - Fatal编程技术网

R 为数据表中每个组内的秩添加一个新列

R 为数据表中每个组内的秩添加一个新列,r,data.table,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 0

我是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     
我必须在“numberOfItem”列的基础上,根据每个组(日期、小时)的分位数添加一个新的列排名。我使用此代码来实现以下目标:

quantfun <- function(x) as.integer(cut(x, quantile(x, probs=0:4/4), include.lowest=TRUE))
X[, Rank:= quantfun(numberOfItem),by="date,hour"]
然后我做了一些除错,发现一些分位数是相同的。因此,我使用以下代码:

       quantfun <- function(x) as.integer(cut(x, unique(quantile(x, probs=0:4/4)), include.lowest=TRUE)) 
       X[, Rank:= quantfun(numberOfItem),by="date,hour"]

任何帮助都将不胜感激。感谢您的帮助。

我想问题可能出在
by=“date,hour”
。请尝试
by=list(日期、小时)
并告诉我这是否有效。另外,请提供您的数据作为
dput
的输出,这样我们可以更容易地再现您的问题。您应该检查
X[,length=.N,by=list(date,hour)][,min(length)]
。谢谢Bernardo。我尝试过你的想法,但仍然得到同样的错误。问题肯定是
cut
,与
数据表
无关。错误告诉您这一点。您需要使您的休息时间为uniqueRoland:最小组长度为16。
       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"