2013-07-22 77 views
2

我希望將數據[R ffdf排序的數據

z=as.ffdf(data.frame(w=c(4,1,2,5,7,8,65,3,2,9), x=c(12,1,3,5,65,3,2,45,34,11),y=1:10)) 

排序我需要根據列W,X排序的數據。如果我們有數據框架,這是非常簡單的任務。

謝謝。

回答

2

使用ffdforder,這將返回一個ff_vector,您可以使用索引您ffdf,而RAM沒有問題。

require(ff) 
z=as.ffdf(data.frame(w=c(4,1,2,5,7,8,65,3,2,9), x=c(12,1,3,5,65,3,2,45,34,11),y=1:10)) 
idx <- ffdforder(z[c("w","x")]) 
zordered <- z[idx, ] 
zordered 
+0

+1好的答案。 – dickoa

+0

@jwijffels謝謝..你搖滾。 – Ajay

+0

它也適用於大數據。 – Ajay

0

你可以嘗試這樣的事情

require(ffbase) 

z <- as.ffdf(data.frame(w=c(4,1,2,5,7,8,65,3,2,9), 
         x=c(12,1,3,5,65,3,2,45,34,11),y=1:10)) 

z[order(z$w[], z$x[]), ] 
##  w x y 
## 2 1 1 2 
## 3 2 3 3 
## 9 2 34 9 
## 8 3 45 8 
## 1 4 12 1 
## 4 5 5 4 
## 5 7 65 5 
## 6 8 3 6 
## 10 9 11 10 
## 7 65 2 7 

您可以使用fforder訂購您ffdf,而無需使用您的RAM。感謝@jwijffels從包裝FF

z[fforder(z$w, z$x), ] 
+0

我申請這對大數據,它給了錯誤「無法分配尺寸256.0 MB的載體」。 – Ajay

+0

@jwijffels你是對的,我沒有在'ff'中看到'order'或'sort'的實現,但我會繼續挖掘。 – dickoa

+0

如果z太大,當您根據整數向量而不是整數ff_vector進行索引時,它將獲取RAM中的所有數據,這將過度燒燬RAM。你可以做的是使用z [as.ff(order(z $ w [],z $ x [])),],因爲這隻會將w和x放入RAM中。 – jwijffels