2011-01-09 2 views
3

У меня есть куча файлов Excel, которые ежедневно обновляются на компьютере под управлением Windows. Я передаю их на машину Ubuntu и хочу открыть их там. В частности, я хочу читать файлы в виде базы данных под R.Файл Excel открыт под Ubuntu, читается R, OpenOffice

Пару лет назад я использовал ODBC под машиной Windows, чтобы открывать файлы Excel через R. Есть ли способ, я могу сделать это с помощью R под Ubuntu ?

Я могу создать базу данных .ODB-файла для соответствующих файлов XLS с помощью OpenOffice, но я не знаю, как подключиться к базе данных .ODB. У OpenOffice, похоже, есть способы подключения баз данных TO, но нет возможности подключиться к ODB.

Спасибо за любые возможные решения.

+0

append: когда я говорю «читать файлы как базу данных», я имею в виду, было бы неплохо использовать SQL для извлечения данных из рабочих листов. –

+0

пакет sqldf может быть вариант: http://cran.r-project.org/web/packages/sqldf/index.html – daroczig

ответ

2

Я бы предложил xlsx пакет, который не имеет особых требований (например, xlsReadWrite и других), поэтому его можно легко использовать под Linux. Хотя он только читает (и пишет) формат xlsx.

Еще один способ использования функции read.xls в пакете gdata, который сначала конвертирует файлы xls в csv и считывает эти фреймы данных. Вам понадобится Perl и xls2csv, что не представляет большой проблемы в Linux.

+4

Для пакета xlsx требуется, чтобы Java была установлена. 'read.xls' в gdata требует, чтобы Perl был установлен. 'xls2csv' является частью пакета gdata, и его не нужно устанавливать отдельно. Существует обсуждение различных доступных альтернатив, в том числе xlsx и gadata, для чтения электронных таблиц Excel в R wiki: http://rwiki.sciviews.org/doku.php?id=tips:data-io:ms_windows –

+0

Я пробовал работая с пакетом xlsx, но я, кажется, сталкиваюсь с проблемами памяти с ним. Таблицы не являются большими, около 100 - 150 Мбайт, но чтение даже листа на фреймворке не выполняется. –

2

Ваше решение ODBC должен работать на Linux, предоставляя вам установить uniXODBC пакет (для вашей операционной системы, вы можете также необходимо unixODBC-devel пакет, если компиляции RODBC) и RODBC пакет для R. Ссылка Gabor предоставляет в своем комментарии к @ Ответ daroczig содержит некоторые сведения о RODBC в Linux; обратите внимание на то, что это относится только к чтению в Linux и потенциально сложной настройке.

Возможно, вам лучше подойдут варианты @daroczig и Gabor, но если вы знакомы с ODBC, вы можете попробовать попробовать Ubuntu.

+1

Спасение, спасибо. Я не был уверен, будет ли опция RODBC работать с файлами Excel под Linux.Где-то в моей голове застряло, что RODBC + Excel нуждается в некоторых драйверах Excel, которые недоступны в Linux. На самом деле, я до сих пор не знаю, как сделать файл Excel доступным через ODBC в Linux. Я сделал это в Windows. И я в порядке с ODBC на Linux как таковой, я использую некоторые другие DB с R через unixODBC. , –

+0

Гэвин, у вас есть представление о том, как сделать файлы .XLSX доступными через unixODBC? –

+0

@ Vishal Belsare - нет, извините, я этого не делаю. Я нахожу ODBC немного черным искусством в Linux. Я только предоставил свой ответ, если вам уже было удобно настраивать ресурсы ODBC в Linux. Я ненавижу Excel со страстью - я настаиваю на том, что любой, кто работает со мной, экспортирует csv или подобные файлы, если они хотят, чтобы я делал анализ на них. –

2

Есть еще одно решение - разместить свои данные в базе данных, к которой имеют доступ обе ваши машины. Postgres или MySQL не будут стоить вам ничего или сервера MS-SQL, если у вас будет грохот денег. То, что вы пытаетесь сделать, это именно то, для чего были созданы сетевые RDBMS. Вы сможете играть с данными в Excel и R на удаленных компьютерах. Выиграть.

Копирование файлов Excel вокруг является массовым сбоем в ожидании. Получите себе настоящую СУБД. Я поеду за Postgres.

+0

Я ограничен данными, обязательно проживающими в файлах Excel. (думаю, файлы обновлены на терминале финансовых данных). Я бы полностью избавился от Excel, если бы это был не канал передачи данных. Кстати. Я использую Postgres + R, MonetDB + R для других проектов. , В этом случае мне нужно иметь возможность читать из файлов Excel, которые обновляются ежедневно, а затем я собираюсь заполнить RDBMS, скорее всего Postgres –

4

Возможно, вам удастся избежать использования xls2csv от apt-get install catdoc, чтобы сбрасывать файлы Excel в CSV. Тогда вы можете в значительной степени выбрать свой яд, чтобы узнать, как они получают оттуда. read.csv.sql из пакета sqldf может быть очень удобным, если вы хотите извлечь информацию с помощью операторов SQL.

+0

Можете ли вы запустить catdoc из R? –

+0

@ Roman Luštrik: возможно с системным вызовом (см .: «система»). – daroczig

+0

, учитывая, что gdata и xlsx не справляются с проблемами памяти, мне, возможно, придется быстро отправить xls2csv. –

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