CSV-файл с несколькими временными рядами - PullRequest
2 голосов
/ 04 февраля 2009

Я импортировал CSV-файл с большим количеством столбцов и разделов данных.

v <- read.csv2("200109.csv", header=TRUE, sep=",", skip="6", na.strings=c(""))

Структура файла выглядит примерно так:

Dataset1
time, data, .....
0       0
0       <NA>
0       0

Dataset2
time, data, .....
00:00   0
0       <NA>
0       0

(Заголовки разных наборов данных в точности совпадают.

Теперь я могу построить первый набор данных с помощью:

plot(as.numeric(as.character(v$Calls.served.by.agent[1:30])), type="l")

Мне любопытно, есть ли лучший способ:

  1. Получите все числа, прочитанные как числа, без необходимости преобразования.

  2. Обращаться к различным наборам данных в файле, в некотором смысле.

Любые намеки приветствуются. Спасибо.


Обновление статуса:

Я пока не нашел хорошего решения в R, но я начал писать скрипт на Lua для разделения каждого отдельного временного ряда в отдельный файл. Я оставляю это открытым пока, потому что мне любопытно, как хорошо R справится со всеми этими файлами. Я получу 8 файлов в день.

1 Ответ

3 голосов
/ 27 марта 2009

То, что я лично сделал бы, - это создать сценарий на каком-либо языке сценариев для разделения различных наборов данных перед тем, как файл будет считан в R, и, возможно, также выполнить некоторые необходимые преобразования данных.

Если вы хотите выполнить разбиение в R, найдите readLines и scan & ndash; read.csv2 слишком высокий уровень и предназначен для чтения одного фрейма данных. Вы можете записать разные наборы данных в разные файлы или, если вы амбициозны, составить файлоподобные объекты R, которые можно использовать с read.csv2, и прочитать из правильных частей лежащего в основе большого файла.

Как только вы разберетесь с разделением наборов данных на разные файлы, используйте read.csv2 для тех (или какой вариант read.table лучше всего - если это не вкладки, а поля фиксированной ширины, см. read.fwf). Если <NA> означает «недоступен» в вашем файле, обязательно укажите его как часть na.strings. Если вы этого не сделаете, R думает, что у вас есть нечисловые данные в этом поле, но с правом na.strings вы автоматически преобразуете поле в числа. Кажется, что одно из ваших полей может включать метки времени, например 00:00, поэтому вам нужно использовать colClasses и указать класс, в который может быть конвертирован ваш формат меток времени. Если встроенный класс Date не работает, просто определите свой собственный класс timestamp и функцию as.timestamp, которая выполняет преобразование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...