Data.table ff/ffbase R 包中的 setDT 功能
Data.table setDT functionality in ff/ffbase R packages
计算条件均值列,在 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)
所以最后一个问题是,如何将 VectorOfMeans
添加到 irisdf
,我试过下面的代码,有效:
irisdf=as.ffdf(iris)
VectorOfMeans <- as.ffdf(as.ff(ave(irisdf[,1], irisdf[,5], FUN=mean)))
irisdf <- cbind.ffdf2(df,VectorOfMeans )
with cbind.ffdf2 来自 SO 答案,但我想,SO 问题是关于比主要问题更具体的问题,我想有一种更简单(更快)的方法可以做到这一点。我希望能够 运行 bigglm.ff
在获得的数据集上(例如 irisdf
),你应该看看我关于合并 VectorOfMeans
和 irisdf
的问题上下文(因为 physical/virtual 存储模式存在问题,我不了解细节)。
也许这有帮助
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)
计算条件均值列,在 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)
所以最后一个问题是,如何将 VectorOfMeans
添加到 irisdf
,我试过下面的代码,有效:
irisdf=as.ffdf(iris)
VectorOfMeans <- as.ffdf(as.ff(ave(irisdf[,1], irisdf[,5], FUN=mean)))
irisdf <- cbind.ffdf2(df,VectorOfMeans )
with cbind.ffdf2 来自 SO 答案,但我想,SO 问题是关于比主要问题更具体的问题,我想有一种更简单(更快)的方法可以做到这一点。我希望能够 运行 bigglm.ff
在获得的数据集上(例如 irisdf
),你应该看看我关于合并 VectorOfMeans
和 irisdf
的问题上下文(因为 physical/virtual 存储模式存在问题,我不了解细节)。
也许这有帮助
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)