我有一个非常大的数据集,我想在其中对 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 来处理这个问题,您可以使用
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