/ / Czytaj tylko linie z dużego pliku tekstowego, które spełniają określone warunki - r, bigdata

Czytaj tylko linie z dużego pliku tekstowego, który spełnia określony warunek - r, bigdata

Mam duży plik (data.txt, 35 GB), który ma 3 kolumny. Niektóre przykładowe części pliku wyglądałyby następująco:

...   ...    ...
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
...   ...    ...

Chcę narysować histogram dla trzeciej kolumny, gdy wartości w drugiej kolumnie wynoszą od 0 do 50 ”000.

Następnie chcę zrobić inny histogram, w którym wartości pierwszej kolumny wynoszą od 50 do 100 000. I tak dalej i tak dalej.

Nie wiem, jak ładować / czytać tylko dane, których potrzebuję w danym momencie.

Jeśli powinienem użyć pakietu sqldf, to mam pytanie, jak mogę powiedzieć, że wartość drugiej kolumny powinna być mniejsza niż np. 50 ”000?

Różnica do Jak odczytać tylko linie, które spełniają warunek z CSV do R? Czy nie mam żadnych nazw kolumn, dlatego nie mogę zrobić tego, co proponują w swoim rozwiązaniu:

sql = "wybierz * z pliku gdzie Sepal.Length> 5"

Odpowiedzi:

0 dla odpowiedzi № 1

Myślę, że ostatnie wersje readr wspierać tego rodzaju rzeczy. Poniższe informacje zostały zaadaptowane z pomocy dla 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
)