Как импортировать последние 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