Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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中ff向量的tapply、ave函数_R - Fatal编程技术网

使用R中ff向量的tapply、ave函数

使用R中ff向量的tapply、ave函数,r,R,我一直在尝试使用tapply,ave,ddply来创建一组变量(年龄、性别)的统计数据。我无法成功地使用上述R命令 library("ff") df <- as.ffdf(data.frame(a=c(1,1,1:3,1:5), b=c(10:1), c=(1:10))) tapply(df$a, df$b, length) 或 目前在ff包中没有针对ff_向量的tapply或ave。 但您可以在中使用功能。 让我们详细说明一些更大的数据集 require(ffbase) a <-

我一直在尝试使用
tapply
ave
ddply
来创建一组变量(年龄、性别)的统计数据。我无法成功地使用上述R命令

library("ff")
df <- as.ffdf(data.frame(a=c(1,1,1:3,1:5), b=c(10:1), c=(1:10)))
tapply(df$a, df$b, length)


目前在ff包中没有针对ff_向量的tapply或ave。 但您可以在中使用功能。 让我们详细说明一些更大的数据集

require(ffbase)
a <- ffrep.int(ff(1:100000), times=500) ## 50Mio records on disk - not in RAM
b <- ffrandom(n=length(a), rfun = runif)
c <- ffseq_len(length(a))
df <- ffdf(a = a, b = b, c = c) ## on disk
dim(df)
require(ffbase)

a请提供您的.df@sgibb,谢谢您的编辑,这里非常新。请尝试
tapply(df[,'a'],df[,'b'],length)
。谢谢!在语句df$groupbyfactor中,所有数据都存储在磁盘上。对于除factors之外的所有vmodes,虚拟部分的大小只有几Kb。对于因子,所有因子级别也存储在RAM中,数据存储在磁盘上。所以,如果您不能在RAM中加载所有的因子级别,您就会得到那个错误。当这种情况发生时,主要是因为RAM中还有其他对象导致了问题。在这个例子中,我不认为100000因子级别是导致溢出的原因,但是在r会话期间RAM中有其他东西。
Error in byMean(df$b, df$a) : object 'index' not found
require(ffbase)
a <- ffrep.int(ff(1:100000), times=500) ## 50Mio records on disk - not in RAM
b <- ffrandom(n=length(a), rfun = runif)
c <- ffseq_len(length(a))
df <- ffdf(a = a, b = b, c = c) ## on disk
dim(df)
df$groupbyfactor <- as.character(df$a)
agg <- binned_sum(x=df$b, bin=df$groupbyfactor, nbins = length(levels(df$groupbyfactor)))
head(agg)
agg[, "count"]
require(data.table)
agg <- ffdfdply(df, split=df$groupbyfactor, FUN=function(x){
  x <- as.data.table(x)
  result <- x[, list(b.mean = mean(b), b.median = median(b), b.length = length(b),     whatever = b[c == max(c)][1]), by = list(a)]
  result <- as.data.frame(result)
  result
})
class(agg)
aggg <- as.data.frame(agg) ## Puts the data in RAM!