R ffdf排序数据

R ffdf排序数据,r,R,我想对数据进行排序 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列的排序数据。如果我们有一个数据帧,这是一个非常简单的任务 谢谢。你可以试试这样的 require(ffbase) z <- as.ffdf(data.frame(w=c(4,1,2,5,7,8,65,3,2,9), x=c(12,

我想对数据进行排序

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列的排序数据。如果我们有一个数据帧,这是一个非常简单的任务


谢谢。

你可以试试这样的

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

使用包ff中的ffdforder,这将返回一个ff_向量,您可以使用它来索引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
require(ff)
z=as.ffdf(数据帧(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我将其应用于大数据,它给出了错误“无法分配256.0 Mb大小的向量”。@jwijffels你是对的,我没有在
ff
中看到
order
sort
的实现,但我将继续挖掘。如果z太大,这将导致RAM流量过大,因为它将在RAM中获取所有数据,因为您基于整数向量而不是整数ff\u向量进行索引。您可以使用z[as.ff(order(z$w[],z$x[]),因为这只会将w和x放入RAM中。ff中的顺序和排序功能称为ffsort、ffdfsort、fforder、ffdforder。是的,我正在查看
ffbase
帮助。谢谢。我更新了answer@jwijffels谢谢你太棒了。
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