首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ff/ffbase R包中的Data.table setDT功能

ff/ffbase R包中的Data.table setDT功能
EN

Stack Overflow用户
提问于 2015-02-08 18:30:32
回答 1查看 1.3K关注 0票数 2

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

代码语言:javascript
复制
library(data.table)
irisdf <- as.data.table(iris)
class(irisdf)
#"ffdf"
irisdf[,  NewMean:= mean(Sepal.Length), Species] 

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

代码语言:javascript
复制
condMean(x = irisdf[,1], index = irisdf[,5], na.rm = FALSE)

,而不是nrow(irisdf)长度的新载体。

正如@BondedDust建议的那样,ave(base)提供了正确的输出:

代码语言:javascript
复制
VectorOfMeans <- ave(irisdf[,1], irisdf[,5], FUN=mean)

因此,最后一个问题是,如何将VectorOfMeans添加到irisdf中,我尝试了下面的代码,这是有效的:

代码语言:javascript
复制
irisdf=as.ffdf(iris)
VectorOfMeans <- as.ffdf(as.ff(ave(irisdf[,1], irisdf[,5], FUN=mean)))
irisdf <- cbind.ffdf2(df,VectorOfMeans )

有了cbind.ffdf2的答案,但我想,这个问题是关于比main更具体的问题,我认为有一种更简单(更快)的方法可以做到这一点。我希望能够在获取的数据集上运行bigglm.ff (例如,irisdf),您应该看看我关于在这个上下文中合并VectorOfMeansirisdf的问题(因为物理/虚拟存储模式存在一些问题,我对此不太了解)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-08 20:11:15

也许这能帮上忙

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28397730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档