gpt4 book ai didi

r - 按代码列将 R 中的多个 data.tables 排序为相同数量的 data.tables 而无需绑定(bind) data.tables(由于内存限制)

转载 作者:行者123 更新时间:2023-12-02 02:52:39 24 4
gpt4 key购买 nike

我有许多 CSV,其中包含大量数据,这些数据未按集合中所有 CSV 的代码排序。我想对整个集合中的代码进行排序,将代码组保存到 CSV 中,并在未排序时保持与以前相同数量的 CSV。 我无法将它们绑定(bind)在一起、排序和拆分(我通常会这样做),因为由于内存限制,我必须将 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

下面是我想要的格式的上述数据的示例。所以原来的data.tables上有codes 1-2000,这里把codes split了,codes 1:500在desired1上,codes 501:1000在desired2上,codes 1001:1500在desired3上,codes 1501:2000在desired1上在 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 的最快方法是什么?提前致谢!

最佳答案

按顺序 rbindfor 循环将提高内存效率

out <- data1[code %in% 1:500]
for(i in 2:4) out <- rbind(out, get(paste0('data', i))[code %in% 1:500])
identical(out, desired1)
#[1] TRUE

关于r - 按代码列将 R 中的多个 data.tables 排序为相同数量的 data.tables 而无需绑定(bind) data.tables(由于内存限制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51354113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com