在R中我使用ffdf
來處理大型數據集。我想使用ffbase
包中的ffdfdply
根據某個變量(var)分割數據,然後使用var的唯一值爲所有觀察值計算一些特徵(例如:var的每個唯一值的觀察值數目)。用ffdfdply
來查看這是否可行,我執行了下面描述的例子。使用ffdfdply拆分數據並獲得拆分中每個id的特徵
我預計它會分裂每個物種,然後計算最小Petal.Width
每個Species
,然後返回一個每兩列三個條目列出了此Species
的Species
和最小Petal.Width
。預期輸出:
Species min_pw
1 setosa 0.1
2 versicolor 1.0
3 virginica 1.4
然而對於BATCHBYTES=5000
它將使用兩個狹縫,一個含有兩個物種和其它含有一個物種。這將導致以下:
Species min_pw
1 setosa 0.1
2 virginica 1.4
當我改變BATCHBYTES
到2000年,這將迫使ffdfdply
用三次分裂,從而導致上述公佈的預期輸出。不過,我想有另一種方法來強制分割分配給'split'的變量的每個唯一值。有什麼辦法可以做到這一點嗎?或者您有任何其他建議來獲得我需要的結果嗎?
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