2010-08-06 14 views
6

L'installazione del pacchetto RODBC su Ubuntu è un po 'un gioco da ragazzi. Per prima cosa ho imparato a installare il seguente:odbcConnectExcel funzione dal pacchetto RODBC per R non trovata su Ubuntu

$ sudo apt-get install r-cran-rodbc 

che non era abbastanza buono come il pacchetto è stato ancora alla ricerca di file di intestazione. Ho risolto questo problema con:

$ sudo apt-get install unixodbc-dev 

Buono, RODBC installato correttamente sulla macchina Ubuntu. Ma quando provo ad eseguire il seguente script:

## import excel file from Dropbox 

require("RODBC") 

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

petro <- sqlFetch (channel, "weekly") 

odbcClose(channel) 

str(petro) 
head(petro) 

ottengo un errore gettato tale funzione non odbcConnectExcel trovato. Ho controllato il caso di ogni lettera, assicurandomi che non fosse un semplice refuso. No. Poi ho eseguito questo stesso script su un'installazione di Windows R (ovviamente diverso dal percorso del file) e lo script funziona.

Qualche idea del motivo per cui l'installazione di Ubuntu R non riesce a trovare la funzione odbcConnectExcel e come posso farlo funzionare?

risposta

5

Questa funzionalità è disponibile dove Excel è disponibile. In altre parole: non su Ubuntu.

Per riferimento, dal R Data Import/Export manual (con il mio evidenziazione):

4.3.2 Pacchetto RODBC

pacchetto RODBC su CRAN fornisce un'interfaccia per fonti di database che sostengono un'interfaccia ODBC. Questo è molto ampiamente disponibile e consente allo stesso codice R di accedere a diversi sistemi di database . RODBC gira su Unix/Linux, Windows e Mac OS X e quasi tutti i sistemi di database forniscono il supporto per ODBC. Abbiamo testato Microsoft SQL Server, Access, MySQL, PostgreSQL, Oracle e IBM DB2 su Windows e MySQL, Oracle, PostgreSQL e SQLite su Linux.

ODBC è un sistema client-server, e abbiamo hanno felicemente collegato ad un DBMS in esecuzione su un server Unix da un client di Windows , e viceversa.

Sul supporto di Windows ODBC è normalmente installato, e le versioni attuali sono disponibili da http://www.microsoft.com/data/odbc/ come parte di MDAC. Su Unix/Linux avrete bisogno di un Gestione driver ODBC come unixODBC (http://www.unixODBC.org) o iOBDC (http://www.iODBC.org: questo è preinstallato in Mac OS X) e un driver installato per il sistema di database .

di Windows fornisce i driver non solo per DBMS, ma anche per Excel (.xls) fogli di calcolo, file DBase (dbf) e anche i file di testo. (Non è necessario installare le applicazioni installate. Quali formati di file sono supportati da dipende dalle versioni dei driver.) Ci sono versioni per Excel 2007 e Access 2007 (vai al http://download.microsoft.com, e ricerca di Office ODBC, che sarà portare a AccessDatabaseEngine.exe), il driver di Office System `2007'.

+1

Beh, certo, questo lo spiega molto bene. Ratti. – Milktrader

+0

Credo che ci siano pacchetti che leggono file di Excel usando Perl e sospetterei che avrebbero funzionato in Ubuntu. –

+0

corretto. E su Debian/Ubuntu si ottiene il più vecchio di questi tramite 'apt-get install r-cran-gdata' e funzionerà (almeno per il vecchio formato' .xls'). –

5

Ho trovato che RODBC è un vero problema per Ubuntu. Forse è perché non conosco i giusti incantesimi, ma sono passato a RJDBC e ho avuto molta più fortuna con esso. As discussed here.

Come dice Dirk, non risolverà il problema di Excel. Per scrivere Excel ho avuto molta fortuna con il pacchetto WriteXLS. In Ubuntu ho trovato abbastanza facile da configurare. Avevo già installato Perl e molti dei pacchetti e dovevo semplicemente installare Text :: CSV_XS che ho installato con il gestore dei pacchetti della GUI. Il motivo per cui WriteXLS mi piace è la capacità di scrivere frame di dati su fogli diversi nel file Excel. E ora che guardo la tua domanda, vedo che vuoi LEGGI i file di Excel e non li SCRIVI. Inferno. WriteXLS non lo fa. Bastone con GData, come Dirk ha detto nei suoi commenti:

gdata on CRAN e si sta andando a voler la funzione read.xls():

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

potrebbe essere necessario eseguire installXLSXsupport che installa i moduli Perl necessari.

read.xls aspettano numeri di fogli, non nomi. Il parametro metodo è semplicemente il formato di file intermedio. Se i tuoi dati hanno schede allora non usare tab come formato intermedio. E allo stesso modo per virgole e CSV.

+0

RJDBC ... non ti ho raccomandato questo? ;-) –

+0

Certo che l'hai fatto! E mi hai mandato degli esempi di codice. E ti ripagherò con la birra ogni volta che sarai a Chicago. –

+0

Sì, sono principalmente interessato a leggerli dato che le cifre del governo arrivano nel formato. read.xls sembra che dovrebbe funzionare bene. Grazie. – Milktrader