【发布时间】:2012-07-07 00:08:07
【问题描述】:
在 R 中,我使用 ffdf 处理大型数据集。我想使用 ffbase 包中的 ffdfdply 根据某个变量 (var) 拆分数据,然后为所有具有唯一值 var 的观察值计算一些特征(例如:每个观察值的数量var 的唯一值)。为了查看使用ffdfdply 是否可行,我执行了下面描述的示例。
我希望它会在每个 Species 上拆分,然后计算每个 Species 的最小值 Petal.Width,然后返回两列,每列包含三个条目,列出 Species 和最小值 Petal.Width 为那个 Species .预期输出:
Species min_pw
1 setosa 0.1
2 versicolor 1.0
3 virginica 1.4
但是对于BATCHBYTES=5000,它将使用两个拆分,一个包含两个 Species,另一个包含一个 Species。结果如下:
Species min_pw
1 setosa 0.1
2 virginica 1.4
当我将 BATCHBYTES 更改为 2000 时,这将强制 ffdfdply 使用三个拆分,从而导致上面发布的预期输出。但是,我希望有另一种方法来强制拆分为分配给“拆分”的变量的每个唯一值。有没有办法做到这一点?或者您有什么其他建议可以得到我需要的结果?
ffiris <- as.ffdf(iris)
result <- ffdfdply(x = ffiris,
split = ffiris$Species,
FUN = function(x) {
min_pw <- min(x$Petal.Width)
data.frame(Species=x$Species, min_pw= min_pw)
},
BATCHBYTES = 5000,
trace=TRUE
)
dim(result)
dim(iris)
result
【问题讨论】:
标签: r