我有许多csv包含大量数据,这些数据没有通过集合中所有csv的代码进行排序。我想将整个代码集的代码排序,将代码组保存到csv中,并保持与未排序时相同的csv数量。
我不能像通常那样将它们绑定在一起、排序和拆分,因为由于内存限制,我必须将csv分开。
我真正的数据集是数以百计的csv像这样分割成数十亿行。
例如,如果在fread之后,每个数据表的示例如下:
可复制数据:
###Really I would fread() each of these, but reproducible here
data1 <- data.table(code=rep(c(1:2000),times=500),
data1=rep(c(10001:12000),times=500),
data2=rep(c(20001:22000),times=500))
data2 <- data.table(code=rep(c(1:2000),times=500),
data1=rep(c(10001:12000),times=500),
data2=rep(c(20001:22000),times=500))
data3 <- data.table(code=rep(c(1:2000),times=500),
data1=rep(c(10001:12000),times=500),
data2=rep(c(20001:22000),times=500))
data4 <- data.table(code=rep(c(1:2000),times=500),
data1=rep(c(10001:12000),times=500),
data2=rep(c(20001:22000),times=500))
我想按每个数据的代码排序(实际上有一个可变数字),并保存为相同的csv编号
下面是我想要的格式的上述数据的一个例子。所以原始数据上有代码1-2000。表中,代码被拆分,代码1:500在Desired1上,代码501:1000在Desired2上,代码1001:1500在Desired3上,代码1501:2000在Desired4上。
可重复的所需数据:
###I'd use fwrite to save each one of these as a csv to file
desired1 <- data.table(code=rep(c(1:500),times=2000),
data1=rep(c(10001:10500),times=2000),
data2=rep(c(20001:20500),times=2000))
desired2 <- data.table(code=rep(c(501:1000),times=2000),
data1=rep(c(10501:11000),times=2000),
data2=rep(c(20501:21000),times=2000))
desired3 <- data.table(code=rep(c(1001:1500),times=2000),
data1=rep(c(11001:11500),times=2000),
data2=rep(c(21001:21500),times=2000))
desired4 <- data.table(code=rep(c(1501:2000),times=2000),
data1=rep(c(11501:12000),times=2000),
data2=rep(c(21501:22000),times=2000))
实际上,我有500个或更多的csv文件。什么是最快的排序方法,然后将所有相同的代码保存到相同的csv文件中,同时仍然拆分原始未排序文件中相同数量的csv文件?事先谢谢!