XLConnect: una libreria R per interagire con Excel

Microsoft Excel è uno dei più noti applicativi utilizzati per l’archiviazione dei dati (ma le sue potenzialità vanno ben oltre). Excel è indubbiamente molto comodo per organizzare un dataset, anche se alternative altrettanto buone ma gratuite sono disponibili sul mercato, come LibreOffice e OpenOffice.

Uno dei punti deboli di R è sempre stata la sua difficoltà nell’importare ed esportare dati da e per Excel. Negli ultimi anni, però, una società svizzera – la Mirai Solutions GmbH – ha sviluppato XLConnect, una libreria che permette di eseguire queste operazioni abbastanza agevolmente. In rete si trova anche un dettagliato manuale che descrive come utilizzare le funzioni messe a disposizione dal package.

Il comando che genera con connessione tra R e un file Excel è loadWorkbook, che richiede di specificare il nome del file da leggere. Ovviamente, la cartella di lavoro di R deve essere la stessa che contiene il file.

library(XLConnect)
wb <- loadWorkbook("myfile.xlsx")
&#91;/code&#93;

<p style="text-align: justify;">Un file Excel potrebbe contenere più fogli di lavoro. Quindi, stabilita la connessione, potremmo chiederci quali sono i fogli contenuti nel file:</p>
[code language="r"]
getSheets(wb)

Ispezionati i fogli di lavoro e identificato quello che contiene il dataset da importare, possiamo leggere i dati in blocco e riversare il contenuto del foglio in un oggetto R:

df <- readWorksheet(wb, sheet="Foglio1", header=T)
&#91;/code&#93;
<p style="text-align: justify;">Dove <i>wb</i> è l'oggetto che contiene le specifiche della connessione stabilita, <i>sheet</i> è il nome del foglio di lavoro da leggere e <i>header</i> specifica se la prima riga del dataset contiene i nomi da attribuire alle colonne. Potrebbero essere specificati anche altri argomenti, come <i>startRow</i> e <i>startCol</i>, che indicano le coordinate della cella da cui far partire la lettura.</p>

<p style="text-align: justify;">Se invece vogliamo esportare in un file Excel un dataset contenuto in un oggetto R, dobbiamo prima di tutto decidere se creare un nuovo file oppure se utilizzare un file già esistente, creando o un nuovo foglio di lavoro oppure scrivendo in un foglio già presente nel file.</p>

<p style="text-align: justify;">Se si vuole esportare un dataset generando un nuovo file, nel creare una connessione con Excel bisogna impostare a TRUE l'argomento <i>create</i> (il quale, se invece è impostato a FALSE, prevede la scrittura su un file preesistente). Per default, <i>create</i> è definito come FALSE.</p>

<p style="text-align: justify;">Prendiamo il caso in cui si debba generare un nuovo file.</p>
[code language="r"]
wb <- loadWorkbook("myfile.xlsx", create=T)
&#91;/code&#93;

<p style="text-align: justify;">Stabilita la connessione, utilizzando la funzione <b>createSheet</b> dobbiamo generare un foglio di lavoro su cui scrivere i dati:</p>

[code language="r"]
createSheet(wb, name="Nuovi Dati")

A questo punto, utilizzando la funzione writeWorksheet, possiamo scrivere i dati sul nuovo file. Tale funzione richiede come primo argomento l'oggetto wb, come secondo argomento il data frame che contiene i dati, e infine il nome del foglio di lavoro su cui scrivere.

writeWorksheet(wb, df, sheet="Nuovi Dati")
saveWorkbook(wb)

È fondamentale l'uso della funzione saveWorkbook, che effettivamente genera il file. Senza di questa, nessn documento Excel verrebbe creato.

Print Friendly

2 Commenti per “XLConnect: una libreria R per interagire con Excel

  1. Pingback: InsulaR

  2. Pingback: ApRire un file SPSS oppure Excel in R | InsulaR

Lascia un Commento