2013-08-30 18 views
9

Witam Mam ogromny plik i chcę zaimportować tylko ostatnie 100 wierszy z tego pliku. Jak to zrobić, używając read.csv() lub jakiejkolwiek alternatywy?Jak zaimportować ostatnie 100 wierszy za pomocą read.csv() w R

+0

Jeśli obawiasz się o szybkość, spróbuj 'fread' z" data.table ", a następnie po prostu wyodrębnij potrzebne wiersze. Podobnie możesz użyć 'sqldf'. Jeśli korzystasz z systemu Unix, masz dostęp do polecenia 'tail', które może być przydatne. – A5C1D2H2I1M1N2O1R2T1

+1

Wiem, że możemy używać poleceń specyficznych dla systemu operacyjnego, ale szukam pracy w samym R! –

Odpowiedz

21

Pakiet R.utils ma funkcję o nazwie countLines(). Można zrobić:

l2keep <- 10 
nL <- countLines("your.csv") 
df <- read.csv("your.csv", header=FALSE, skip=nL-l2keep) 
3

Jeśli korzystasz z systemu * nix, lepiej jest użyć komendy tail -n 100, aby pobrać ostatnie 100 wierszy. Wszystko, co zaimplementowano w R będzie wolniejsze i potencjalnie znacznie wolniejsze, twój plik jest naprawdę ogromny.

Jeśli korzystasz z systemu Windows, możesz rzucić okiem na this SO question.

+0

tak, to prawda. Więc mówisz, że za pomocą niektórych funkcji systemu Windows, aby uzyskać ostatnie 100 wierszy umieścić go w pliku, a następnie zaimportować do R? –

+0

Dość dużo. Możesz zrobić "seek()" i inne "fantazyjne" rzeczy w R ale powodzenia w znalezieniu czegoś, co jest tak szybkie lub proste. – ktdrv

1

Można użyć argumentów nrows i skip w read.csv. Na przykład. Jeśli masz plik z 10000 wierszy i chcesz importować tylko ostatnie 100 wierszy można spróbować to:

read.csv("yourfile.csv",nrows=100,skip=9900) 

Ale jeśli jest to przyspieszyć chcesz, jesteś prawdopodobnie lepiej z rozwiązaniami podanymi przez @Ananda Mahto i @ktdrv

+0

dzięki za odpowiedź. Problem polega na tym, że mój rozmiar pliku jest tak duży, że nie jestem w stanie określić całkowitej liczby rekordów wierszy. –

-2

dać odpowiednie pominąć parametr w read.csv()

+1

to nie odpowiada na pytanie OP. Chcą * odczytać z pliku * tylko ostatnie 100 wierszy. Twoja odpowiedź zakłada, że ​​zestaw danych został już przeczytany. –

0

Szybki i brudny sposób, że pracuje dla mnie - użyj fread do odczytu dużych plików podczas ustawiania select = 1 tak, że tylko odczytana jest pierwsza kolumna. Następnie ponownie użyj fread, aby odczytać dane z żądanych wierszy. Fread jest znacznie szybszy niż read.csv lub inne podobne warianty. Więcej o fread vstutaj: Reason behind speed of fread in data.table package in R

Powiązane problemy