Как импортировать последние 100 строк с помощью read.csv () в R

Привет у меня огромный файл, и я хочу импортировать только последние 100 строк из этого файла. Как мы можем это сделать, используя read.csv () или любая альтернатива?

6 ответов


пакет R. utils имеет функцию, называемую countLines (). Вы могли бы сделать:

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

Если вы находитесь в системе *nix, вам лучше использовать tail -n 100 команда, чтобы взять последние 100 строк. Все, что реализовано в R, будет медленнее и потенциально намного медленнее, ваш файл действительно огромен.

Если вы используете Windows, вы можете взглянуть на это так вопрос.


можно использовать nrows и skip аргументы read.csv. Е. Г. если у вас есть файл с 10000 строк и вы хотели бы импортировать последние 100 строк, вы могли бы попробовать это:

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

но если вы хотите скорость, вам, вероятно, лучше с решениями, данными @Ananda Mahto и @ktdrv


улучшение ответа @lauratboyer, если вы хотите включить заголовки:

# read headers only
column_names <- as.vector(t(read.csv("your.csv", header=FALSE, colClasses='character', nrows=1)))

# then last n lines
l2keep <- 10
nL <- R.utils::countLines("your.csv")
df <- read.csv("your.csv", header=FALSE, col.names=column_names, skip=nL-l2keep)

быстрый и грязный способ, который работает для меня - использовать fread для чтения больших файлов при настройке select = 1 Так, что читается только первый столбец. Тогда используйте fread снова для чтения данных из нужных строк. Fread намного быстрее, чем read.csv или другие похожие варианты. Подробнее о fread vs read.csv здесь: причина скорости fread в данных.пакет таблицы в R


надлежащим пропустить параметр в read.csv ()