2010-08-06 16 views
6

Instalar el paquete RODBC en Ubuntu es un poco complicado. Primero aprendí a instalar lo siguiente:función odbcConnectExcel del paquete RODBC para R que no se encuentra en Ubuntu

$ sudo apt-get install r-cran-rodbc 

Eso no era lo suficientemente bueno ya que el paquete aún buscaba archivos de encabezado. Resolví este problema por:

$ sudo apt-get install unixodbc-dev 

Bueno, RODBC instalado correctamente en la máquina Ubuntu. Pero cuando trato de ejecutar la siguiente secuencia de comandos:

## import excel file from Dropbox 

require("RODBC") 

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

petro <- sqlFetch (channel, "weekly") 

odbcClose(channel) 

str(petro) 
head(petro) 

consigo no odbcConnectExcel encontró un error que se produce esa función. Revisé el caso de cada letra, asegurándome de que no era un simple error tipográfico. Nop. Luego ejecuté este mismo script en una instalación de Windows R (la ruta del archivo es diferente, por supuesto) y el script funciona.

¿Alguna idea de por qué la instalación de Ubuntu R no puede encontrar la función odbcConnectExcel y cómo puedo hacer que funcione?

Respuesta

5

Esa funcionalidad está disponible donde Excel está disponible. En otras palabras: no en Ubuntu.

Como referencia, desde el R Data Import/Export manual (con mi resaltado):

4.3.2 Paquete RODBC

paquete RODBC en CRAN proporciona una interfaz a las fuentes de bases de datos apoyo de una interfaz ODBC. Esto es muy ampliamente disponible, y permite el mismo código R para acceder a diferentes sistemas de base de datos . RODBC se ejecuta en Unix/Linux, Windows y Mac OS X, y casi todos los sistemas de bases de datos proporcionan compatibilidad con para ODBC. Hemos probado Microsoft SQL Server, Access, MySQL, PostgreSQL, Oracle e IBM DB2 en Windows y MySQL, Oracle, PostgreSQL y SQLite en Linux.

ODBC es un sistema cliente-servidor, y ha conectado felizmente a un DBMS que se ejecuta en un servidor Unix desde un cliente de Windows , y viceversa.

En el soporte de Windows ODBC es normalmente instalado, y las versiones actuales son disponible de http://www.microsoft.com/data/odbc/ como parte de MDAC. En Unix/Linux va necesita un gestor de controladores ODBC como unixODBC (http://www.unixODBC.org) o iOBDC (http://www.iODBC.org: esto es pre-instalado en Mac OS X) y un controlador instalado para su sistema de base de datos .

de Windows proporciona a los conductores no sólo para DBMS, sino también para Excel (.xls) hojas de cálculo, archivos de dBase (.dbf) y incluso archivos de texto. (Las aplicaciones con nombre no necesitan ser instaladas. Los formatos de archivo que son compatibles con dependen de las versiones de los controladores.) Hay versiones para Excel 2007 y Access 2007 (van a http://download.microsoft.com y búsqueda de Office ODBC, que se llevan a AccessDatabaseEngine.exe), el ` 2007 Office System Driver'.

+1

Bueno, por supuesto, eso lo explica muy bien. Ratas – Milktrader

+0

Creo que hay paquetes que leen archivos de Excel con Perl y sospecho que funcionarán en Ubuntu. –

+0

Correcto. Y en Debian/Ubuntu obtienes la más antigua por 'apt-get install r-cran-gdata' y funcionará (para el formato anterior' .xls' al menos). –

5

He encontrado que RODBC es un verdadero dolor en Ubuntu. Tal vez sea porque no sé los encantamientos correctos, pero cambié a RJDBC y he tenido mucha mejor suerte con eso. As discussed here.

Como dice Dirk, eso no resolverá su problema de Excel. Para escribir Excel he tenido mucha suerte con el paquete WriteXLS. En Ubuntu me pareció bastante fácil de configurar. Tenía instalados Perl y muchos de los paquetes, y simplemente tuve que instalar Text :: CSV_XS que instalé con el administrador de paquetes de GUI. La razón por la que me gusta WriteXLS es la capacidad de escribir marcos de datos en diferentes hojas en el archivo de Excel. Y ahora que veo tu pregunta, veo que deseas LEER archivos de Excel, NO ESCRIBIRLOS. Infierno. WriteXLS no hace eso. Seguir con gdata, como dijo Dirk en sus comentarios:

gdata on CRAN y vas a querer la función read.xls():

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

puede que tenga que ejecutar installXLSXsupport que instala los módulos Perl necesarios.

read.xls esperan números de hoja, no nombres. El parámetro de método es simplemente el formato de archivo intermedio. Si sus datos tienen pestañas, entonces no use la pestaña como el formato intermedio. Y del mismo modo para comas y csv.

+0

RJDBC ... ¿no te lo recomiendo? ;-) –

+0

¡Por supuesto que sí! Y me enviaste ejemplos de código. Y le pagaré con cerveza cada vez que se encuentre en Chicago. –

+0

Sí, estoy interesado principalmente en leerlos, ya que las cifras del gobierno vienen en el formato. read.xls parece que debería funcionar bien. Gracias. – Milktrader

Cuestiones relacionadas