Установка пакета 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 и как я могу заставить это работать?
Эта функциональность доступна там, где доступен Excel. Другими словами: не на Ubuntu.
Для справки, из руководства R Data Import / Export manual (с моим выделением):
4.3.2 Package RODBC
Package 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/ as как часть 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, and найдите
Office ODBC
, что приведет к откроется файл AccessDatabaseEngine.exe), а именно `2007 Office System Driver`.
Я обнаружил, что RODBC - настоящая проблема в Ubuntu. Может быть, это потому, что я не знаю правильных заклинаний, но я переключился на RJDBC, и мне с ним повезло больше. Как обсуждается здесь .
Как говорит Дирк, это не решит вашу проблему с Excel. Для написания Excel мне очень повезло с пакетом WriteXLS. В Ubuntu я обнаружил, что это довольно легко настроить. У меня был Perl и многие пакеты, которые уже были установлены, и мне пришлось просто установить Text :: CSV_XS, который я установил с помощью диспетчера пакетов с графическим интерфейсом. Причина, по которой мне нравится WriteXLS, - это возможность записывать фреймы данных на разные листы в файле Excel. И теперь, когда я смотрю на ваш вопрос, я вижу, что вы хотите ЧИТАТЬ файлы Excel, а не ЗАПИСАТЬ их. Ад. WriteXLS этого не делает. Придерживайтесь gdata, как сказал Дирк в своих комментариях:
gdata on CRAN , и вам понадобится функция read.xls ():
read.xls("//path//to/excelfile.xls", sheet = 1, verbose=FALSE, pattern, ...,
method=c("csv","tsv","tab"), perl="perl")
вам может потребоваться запустить installXLSXsupport
, который устанавливает необходимые модули Perl.
read.xls ожидает номеров листов, а не имен. Параметр метода - это просто промежуточный формат файла. Если в ваших данных есть вкладки, не используйте вкладку в качестве промежуточного формата. То же самое для запятых и csv.