/ / Чете само линии от голям текстов файл, които изпълняват специфични условия - r, bigdata

Прочетете само линии от голям текстов файл, които изпълняват специфични условия - r, bigdata

Имам голям файл (data.txt, 35 GB), който има 3 колони. Някои примерни части от файла биха изглеждали по следния начин:

...   ...    ...
5   701565  8679.56
8   1.16201e+006    3193.18
1   1.16173e+006    4457.85
14  1.16173e+006    4457.85
9   1.77942e+006    7208.73
4   1.78011e+006    8239.88
14  1.78019e+006    8195.57
9   2.00206e+006    8858.55
4   2.00199e+006    7924
...   ...    ...

Искам да начертая хистограма за третата колона, когато стойностите във втората колона са между 0 и 50 000.

След това искам да направя друга хистограма, където стойностите на първата колона са между 50 000 и 100 000. И така нататък.

Не знам как да зареждам / чета само данните, от които имам нужда по всяко време. Всяка помощ ще бъде оценена!

Ако трябва да използвам sqldf пакета тогава въпросът, който имам, би бил как мога да кажа, че стойността на втората колона трябва да бъде по-малка от една т.н. 50 "000?

Разликата до Как да чета само линии, които изпълняват условие от CSV в R? е, че нямам имена на колони, затова не мога да направя това, което предлагат в решението си:

sql = "изберете * от файл, където Sepal.Length> 5"

Отговори:

0 за отговор № 1

Мисля, че последните версии на readr подкрепят такива неща. Следното е само адаптирано от помощта за readr::read_csv_chunked

library(readr)

f <- function(x, pos) subset(x, X3 > 0 & X3 < 50000)
df <- read_csv_chunked(
"test.csv",
DataFrameCallback$new(f),
chunk_size = 100000,
col_names = F
)