使用 fread 对行进行子集化

问题描述 投票:0回答:1

我有一个非常大的数据集,我想在其中对 fread 本身的行和列进行 susbet。我使用了以下代码

  dat <- na.omit(fread(text = "C:/data.txt", header = FALSE, skip = 100,
                     fill = T, select = c(1, 2, 3),
                     col.names = c("A", "B", "C"),
                     na.strings = "#"))

“data.txt”文件有 30 列和一百万行。我在 fread 函数中选择了前 3 列并省略了 NA 行。第一列是时间。我想在 fread 中包含一个 subset() ,它只读取时间 > 25 的行。这可能吗?我不想稍后阅读所有行和子集

r fread
1个回答
0
投票

如果仅使用 R 来处理这个问题,您可以使用

vroom
库来延迟加载您的数据,然后过滤它们,这样您就可以只在内存中保留您需要的子集。

更多请看这里 https://www.tidyverse.org/blog/2019/05/vroom-1-0-0/

不知道您的数据格式,但脚本会像这样

library(dplyr)
library(vroom)

dat <- vroom("C:/data.txt", skip = 100, na = "#") #lazy loads your entire dataset

#dat_sub stores the subset in memory

dat_sub <- dat |> 
             select(yourcols) |> # select the columns you want
             filter(time > 25) #filter time column
© www.soinside.com 2019 - 2024. All rights reserved.