подмножество большого текстового файла перед его чтением в переменную в R

У меня есть большой текстовый файл (примерно 2 миллиона строк). Первый столбец - это дата в формате 01.01.2006. Значения разделяются знаком;

data <- read.table("largeFile.txt", sep=";")

dataToUse <- data[data$Date >= 01/02/2007 && data$Date <= 02/02/2007,]

пример строки:

16/12/2006;17:36:00;5.224;0.478;232.990;22.400;0.000;1.000;16.000

Приведенный выше код также не работает, но есть ли способ сначала выделить подмножество, а затем загрузить данные в переменную данных? Поскольку файл большой, и на его загрузку уходит какое-то время?


person Mefhisto1    schedule 08.06.2014    source источник
comment
Прежде всего, изучите help("&&"), чтобы узнать, почему вы должны использовать вместо этого &. Затем взгляните на функцию fread в таблице данных пакета для более быстрого импорта.   -  person Roland    schedule 08.06.2014
comment
Также обратите внимание на stackoverflow.com/questions/1727772/   -  person nico    schedule 08.06.2014


Ответы (1)


Чтобы подмножество работало, вам нужны кавычки и на один амперсанд меньше.

dataToUse <- data[data$Date >= "01/02/2007" & data$Date <= "02/02/2007", ]

Вы также можете использовать функцию subset().

subset(data, Date >= "01/02/2007" & Date <= "02/02/2007")

Затем, если столбец даты должен быть переменной класса Date, вы можете установить его класс с аргументом colClasses в read.table(). Вы можете установить все классы столбцов таким образом, если хотите, или только одно использование. Просто убедитесь, что даты указаны в правильном формате, прежде чем использовать colClasses для переменных класса дат.

Наконец, чтобы подмножество данных перед их чтением в R, я бы рекомендовал использовать команды shell / unix в терминале или оболочке. Такие функции, как grep, awk, sed и т. Д., Легко и быстро сокращают данные перед их отправкой в ​​R. В Windows я бы рекомендовал вам загрузить Cygwin (это бесплатно и быстро) и, очевидно, только терминал на машинах на базе Linux.

person Rich Scriven    schedule 08.06.2014
comment
+1 за предложение grep. - person Spacedman; 08.06.2014