在 R 中,我ffdf
用来处理大型数据集。我想ffdfdply
从ffbase
包中使用根据某个变量(var)拆分数据,然后为所有具有 var 唯一值的观察值计算一些特征(例如:var 的每个唯一值的观察次数)。为了看看这是否可行,ffdfdply
我执行了下面描述的示例。
我希望它会在每个 Species 上拆分,然后计算每个 Species 的最小值Petal.Width
,Species
然后返回两列,每列包含三个条目,其中列出了那个和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