13 febbraio 2007

Excel 2007 e R(D)COM

Un aspetto interessantissimo della nuova versione di Excel è sicuramente il suo nuovo e più ampio limite in termini di "dimensione": 1,048,576 "righe" e 16,384 "colonne" (rispettivamente records e campi per un informatico, casi e variabili per uno statistico :-). Questi limiti, infatti, rendono sicuramente possibile l'utilizzo di excel come piattaforma di "base" per la gestione di dataset abbastanza grandi. Leggendo questa mia affermazione, un dataminer che lavora con SAS si farà una bella risata nel pensare alle dimensioni (in termini di records, campi e terabyte) dei dataset che lui stesso reputa grandi!!!!! Tuttavia il passaggio da 65,536 a 1,048,576 records aumenta di molto le possibilità di usare Excel come strumento di analisi di dati. Ovviamente non sto pensando a questo foglio elettronico come al motore di analisi del dato, ma sto considerando la possibilità di interagire, tramite R(D)COM, con il software R. Quest'ultimo, infatti, permette sicuramente la possibilità di ricorrere ad un elevato numero di librerie di "funzioni" che, a volte, mi sembrano più aggiornate e più affidabili di quanto sviluppato nei software commerciali.
Attualmente sto seguendo (sulla mailing list) le discussioni degli sviluppatori relative agli aggiornamenti di R(D)COM (o meglio, aggiornamento di RExcel) per una release compatibile con Excel 2007 e, ovviamente, non tarderà ad arrivare una versione stabile.
Infine, ma non per importanza, bisogna sottolineare che le possibilità di utilizzo di R ed Excel per dataset "grandi" (...e ancora una volta ci saranno sicuramente pareri discordanti...) sono direttamente dipendenti dalla macchina sui cui girano i dati. Le possibilità di sfruttare questi nuovi e più ampi limiti di Excel, infatti, sono legati ad un doppio processore e a macchine con ram più consistenti di quelle a cui siamo stati abituati fino ad ora.

4 commenti:

Anonimo ha detto...

complimenti vivissimi per il suo lavoro. Avevo avuto molte difficoltà in tal senso, ma leggendo il suo articolo ho trovato la luce.
Grazie di avere reso pubblico il suo sapere.

michele de meo ha detto...

...esagerato.... :-)

Anonimo ha detto...

Buongiorno,
innanzitutto volevo complimentarmi anch'io per l'utilità delle nozioni che mette a disposizione di tutti.
Volevo porLe un quesito: dovendo importare un database da excel a R, lo salvo come testo delimitato da tabulazione e poi lo importo con read.table.
Il problema è che non so capire se, una volta in R, le date le legge con il formato giusto oppure no. Nel mio file excel io salvo le date con formato data "*gg/mm/aaaa", ma quando visulaizzo il dataframe in R, la variabile data ha formato character.
Come posso fare? C'è un metodo per risolvere questo mio problema?
Grazie in anticipo.

Elena

michele de meo ha detto...

Ciao Elena,
provo a darti la prima soluzione che mi viene in mente.
Salva il file xls in txt dopo aver impostato la data nel formato gg/mm/aa (ad esempio, 19/03/08 invece di 19/03/2008).
L'importazione mediante il comando read.table non leggerà il campo come data ma come testo (factor). Volendo quindi trasformare la variabile nel corretto formato, che in R è la classe "Date", dovrai usare il comando as.Date con la specifica format="%d/%m/%y".
Per capirci meglio, se x è il tuo dataframe importato in R, la cui terza variabile contiene le date, puoi forzare la variabile in formato data mediante:
x[,3]<-as.Date(x[,3], format="%d/%m/%y").
Successivamente mediante il comando str(x) noterai che la terza variabile è appunto gestita come Class 'Date' (che sarà nel formato "yyyy-mm-dd").
Per maggiori dettagli leggi sempre quanto riportato nei manuali di R (digita, ad esempio, il comando ?as.Date e leggi).
Infine, come riportato nel mio post su Rmcdr, se lavorassi con questa libreria potresti importare dati direttamente da excel. In tal caso ti ritroveresti direttamenete il formato Date (o meglio, il formato POSIXct, ma leggi quanto riportato nel manuale a proposito di DateTimeClasses per un approfondimento).