Функция odbcConnectExcel из пакета RODBC для R не найдена в Ubuntu - PullRequest
7 голосов
/ 06 августа 2010

Установка пакета RODBC в Ubuntu является чем-то вроде клочья. Сначала я научился устанавливать следующее:

$ sudo apt-get install r-cran-rodbc

Этого было недостаточно, поскольку пакет все еще искал заголовочные файлы. Я решил эту проблему:

$ sudo apt-get install unixodbc-dev

Хорошо, RODBC правильно установлен на машине с Ubuntu. Но когда я пытаюсь запустить следующий скрипт:

## import excel file from Dropbox

require("RODBC")

channel <- odbcConnectExcel("~/Dropbox/DATA/SAMPLE/petro.xls")

petro <- sqlFetch (channel, "weekly")

odbcClose(channel)

str(petro)
head(petro)

Я получаю сообщение об ошибке, что функция odbcConnectExcel не найдена. Я проверил регистр каждого письма, убедившись, что это не простая опечатка. Нету. Затем я запустил этот же сценарий при установке Windows R (конечно, путь к файлу другой), и сценарий работает.

Есть идеи, почему при установке Ubuntu R не удается найти функцию odbcConnectExcel и как я могу заставить это работать?

Ответы [ 2 ]

6 голосов
/ 06 августа 2010

Эта функция доступна там, где доступен Excel.Другими словами: нет в Ubuntu.

Для справки, из R Руководство по импорту / экспорту данных (с моим выделением):

4.3.2 ПакетRODBC

Пакет RODBC в CRAN обеспечивает интерфейс с источниками базы данных, поддерживающими интерфейс ODBC.Это очень широко доступно и позволяет одному и тому же R-коду получать доступ к различным системам баз данных.RODBC работает в Unix / Linux, Windows и Mac OS X, и почти все системы баз данных поддерживают ODBC.Мы протестировали Microsoft SQL Server, Access, MySQL, PostgreSQL, Oracle и IBM DB2 в Windows и MySQL, Oracle, PostgreSQL и SQLite в Linux.

ODBC - это система клиент-сервер, и мы успешно подключились кСУБД, работающая на сервере Unix с клиента Windows, и наоборот.

В Windows обычно устанавливается поддержка ODBC, а текущие версии доступны с http://www.microsoft.com/data/odbc/ как часть MDAC.В Unix / Linux вам потребуется диспетчер драйверов ODBC, например unixODBC (http://www.unixODBC.org) или iOBDC (http://www.iODBC.org:, предварительно установленный в Mac OS X) и установленный драйвер для вашей системы баз данных.

Windows предоставляет драйверы не только для СУБД, но и для электронных таблиц Excel (.xls), DBase (.dbf) и даже текстовых файлов. (Названные приложения устанавливать не нужно.Какие форматы файлов поддерживаются, зависит от версий драйверов.) Существуют версии для Excel 2007 и Access 2007 (перейдите к http://download.microsoft.com, и найдите Office ODBC, что приведет к AccessDatabaseEngine.exe),«Драйвер системы Office 2007».

5 голосов
/ 07 августа 2010

Я нашел, что RODBC - настоящая боль в Ubuntu.Может быть, это потому, что я не знаю правильных заклинаний, но я перешел на RJDBC и мне повезло больше. Как обсуждено здесь .

Как говорит Дирк, это не решит вашу проблему с Excel.Для написания Excel мне очень повезло с пакетом WriteXLS.В Ubuntu я нашел, что это довольно легко настроить.У меня уже был установлен Perl и многие пакеты, и мне нужно было просто установить Text :: CSV_XS, который я установил с менеджером пакетов GUI.Причиной, по которой мне нравится WriteXLS, является возможность записи фреймов данных на разные листы в файле Excel.И теперь, когда я смотрю на ваш вопрос, я вижу, что вы хотите ПРОЧИТАТЬ файлы Excel, а не ЗАПИШИТЕ их.Ад.WriteXLS не делает этого.Придерживайтесь gdata, как сказал Дирк в своих комментариях:

gdata в CRAN , и вам понадобится функция read.xls ():

read.xls("//path//to/excelfile.xls", sheet = 1, verbose=FALSE, pattern, ...,
method=c("csv","tsv","tab"), perl="perl")

youможет потребоваться запустить installXLSXsupport, который установит необходимые модули Perl.

read.xls ожидает номера листов, а не имена.Параметр метода - это просто промежуточный формат файла.Если ваши данные имеют вкладки, не используйте вкладку в качестве промежуточного формата.И аналогично для запятых и CSV.

...