2013-10-27 3 views
3

Я только что начал использовать R, так что это может быть очень глупый вопрос. Я пытаюсь импортировать данные с помощью:Использование R, импорт данных из сети

emdata=read.csv(file="http://lottery.merseyworld.com/cgi-bin/lottery?days=19&Machine=Z&Ballset=0&order=1&show=1&year=0&display=CSV",header=TRUE) 

Моя проблема заключается в том, что он читает файл CSV в одну колонку (кстати, лотерея данные просто потому, что она публично доступна для загрузки - с использованием в качестве упражнение, чтобы понять, что я могу и чего не могу сделать в R), вместо того, чтобы форматировать его во сколько бы то ни было колонок данных. Если бы кто-то не помог, пожалуйста, даже если это тривиально.

+0

В качестве дополнительного вопроса. Можно ли исключить данные из загрузки? Скажем, например, столбцы, содержащие дату. – user1478335

ответ

4

Хм, это отвратительно для страницы, которая должна быть в формате csv. Вы можете пропустить первые 5 строк, что заставит R правильно прочитать (большую часть) остальной части файла.

emdata=read.csv(file=...., header=TRUE, skip=5) 

Я получил количество строк, чтобы пропустить, посмотрев на источник. Вам все равно придется удалить крут в середине и в конце, а затем очистить столбцы (все они будут факторами из-за встроенного текста).

Было бы намного легче сохранить страницу на ваш жесткий диск, отредактировать ее, чтобы удалить все бесполезные биты, а затем импортировать ее.

... чтобы ответить на ваш РЕАЛЬНЫЙ вопрос, да, вы можете импортировать данные непосредственно из Интернета. В общем, где бы вы ни читали файл, вы можете подставить полный URL-адрес - R достаточно умен, чтобы сделать правильную вещь [tm]. Этот конкретный URL-адрес просто оказывается бесполезным.

+0

Спасибо. Рад, что я не был полностью глупым! – user1478335

0

Вы можете прочитать текст из данного URL, отфильтровывать отвратительную линию, а затем прочитать результат в CSV, как так:

lines <- readLines(url("http://lottery.merseyworld.com/cgi-bin/lottery?days=19&Machine=Z&Ballset=0&order=1&show=1&year=0&display=CSV")) 
read.csv(text=lines[grep("([^,]*,){5,}", lines)]) 

выше регулярное выражение соответствует любым строкам, содержащих по меньшей мере пять запятых.

Смежные вопросы