2

计算包中的条件均值列ff/ffbase。我正在搜索ff/ffbase包中的功能,这允许我进行类似于以下使用data.table包进行的数据操作:

library(data.table)
irisdf <- as.data.table(iris)
class(irisdf)
#"ffdf"
irisdf[,  NewMean:= mean(Sepal.Length), Species] 

中有一个条件均值函数ffbase,但是,它创建了 中的类数长度的向量irisdf[,5]

condMean(x = irisdf[,1], index = irisdf[,5], na.rm = FALSE)

,而不是长度为 的新向量nrow(irisdf)

正如@BondedDust 建议的那样ave(base)给出正确的输出:

VectorOfMeans <- ave(irisdf[,1], irisdf[,5], FUN=mean)

所以最后一个问题是,如何添加VectorOfMeansirisdf我试过下面的代码,它有效:

irisdf=as.ffdf(iris)
VectorOfMeans <- as.ffdf(as.ff(ave(irisdf[,1], irisdf[,5], FUN=mean)))
irisdf <- cbind.ffdf2(df,VectorOfMeans )

使用来自SO答案的cbind.ffdf2,但我想,这个SO问题是关于更具体的问题,然后是主要的,我想有一种更简单(更快)的方法可以做到这一点。我希望能够在获得的数据集上运行(例如),你应该看看我关于合并的问题和在这种情况下(因为物理/虚拟存储模式存在我不详细了解的问题)。bigglm.ffirisdfVectorOfMeansirisdf

4

1 回答 1

1

也许这有帮助

library(data.table)
library(ffbase)
x1 <- as.ffdf(iris)
fd1 <- ffdfdply(x1, split=as.character(x1$Species), FUN=function(x) {
 x2 <- as.data.table(x)
 res <- x2[, NewMean:= mean(Sepal.Length), Species]
 as.data.frame(res)
}, trace=T)
于 2015-02-08T20:11:15.260 回答