Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

RExcel: breve guida all’uso
Agnese Vardanega – gennaio 2013

1.

Introduzione

RExcel (Heiberger & Neuwirth, 2009; Neuwirth, 2013) è un componente aggiuntivo per Excel, che consente di integrare le funzioni di R appunto in Excel. Utilizzabile in office a partire dalla versione 2003, con Excel a 32bit, e sui sistemi Windows (almeno) da XP in avanti, RExcel integra anche i menu di RCommander (Fox, 2005), interfaccia di R.

1.1.

Cosa fa R per Excel

In Excel le funzioni di analisi dei dati, com’è noto da tempo (cfr. ad es.: Cryer et al., 2001; McCullough & Heiser, 2008; Yalta, 2008), producono risultati non affidabili. RExcel integra quindi le funzioni di analisi offerte da R in Excel — consentendo anche di scambiare dati e risultati — secondo tre modalità: • • • modalità “scratchpad” (§5 e §6): consente di scrivere le righe di comando di R in Excel; modalità “funzioni” (§7): integra le funzioni presenti in Excel con altre funzioni, specifiche di R; modalità “macro”: permette di utilizzare le macro per l’esecuzione di comandi in R (cfr. Heiberger & Neuwirth, 2009).

1.2.

Cosa fa Excel per R

La gestione di dati e tabelle, nonché lo scambio degli output con altre applicazioni (ad esempio Word), è molto più semplice in Excel che in R; lo stesso può dirsi anche per la gran parte dei grafici, pur senza sottovalutare alcuni importanti limiti di Excel anche su questo fronte (Cryer et al., 2001). Integrare R ed Excel significa dunque poter gestire i dati in Excel, elaborarli utilizzando le funzioni di R — direttamente all’interno di un foglio Excel, oppure in R, ma potendo facilmente trasferire i risultati in Excel —, ed utilizzare facilmente gli output come si fa normalmente quando si lavora con Excel.

1.3.

Per chi non sa usare R

Questa guida presuppone una minima conoscenza di R, necessaria del resto per poter utilizzare RExcel. Per chi fosse interessato a conoscere i fondamentali di R rimando alla wiki disponibile sul mio sito web (http://www.agnesevardanega.eu/metref/r/; (Vardanega A. et al, 2012), e/o ad uno dei diversi manuali introduttivi disponibili, quali ad esempio Laboratorio di statistica con R, di Iacus e Massarotto (2003). 1 29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

2.
2.1.

Installazione
Se non avete già installato R

Se nel computer non è installato R, la cosa più semplice è scaricare (RAndFriends), che installa e configura automaticamente tutto il necessario, ovvero: • • • R rscproxy rcom

2.2.

Se avete già installato R

Se invece sul vostro computer è già installato R, è preferibile installare i singoli pacchetti necessari, ovvero rcom, rscproxy e RExcelInstaller. Avendo attiva una connessione ad Internet, le procedure da seguire sono: 1. avviare R come amministratori 2. scaricare ed installare i pacchetti necessari ad installare sia il necessario server di collegamento fra Excel e R, che e il componente aggiuntivo per R:
install.packages("RExcelInstaller","rcom","rscproxy"

3. “chiamare” rcom e configurarlo:
library(rcom) comRegisterRegistry()

4. “chiamare” l’installer del componente aggiuntivo di Excel:
library(RExcelInstaller)

5. installare statconnDCOM, componente DCOM sviluppato da statconn per integrare R nelle applicazioni Microsoft
installstatconnDCOM()

6. installare RExcel:
installRExcel()

Alla fine della procedura guidata, dovrebbe aprirsi (in Excel) il file “RExcelAddinAutoInstall.xls”, a completamento dell’installazione. Se non si dovesse visualizzare la finestra del file, potrete trovarlo nella cartella RExcel\xls — in Programmi, o Program Files(x86) —, e comunque dovrebbe essere reperibile nell’elenco dei file recenti, in quanto si apre in automatico, anche se a volte la finestra non si vede.

2

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Per consentire il collegamento fra R ed Excel, è necessario avviare in R il pacchetto rcom. Le versioni più recenti dei pacchetti da installare modificano il file Rprofile.site in modo che non sia necessario farlo a mano1.

2.3.

Possibili problemi

Durante l’installazione di RExcel, potrebbe apparire un messaggio che segnala il fatto che nel file di registro non è stato possibile trovare una installazione valida di R. RExcel, non trovando la versione di R nel registro di Windows, non funzionerà. In questo caso, sarà necessario reinstallare R, selezionare “Opzioni avvio / Sì (avvio custom)” e alla fine, quando apparirà la finestra di dialogo “Selezione processi addizionali” spuntare l’opzione “Memorizza il numero di versione nel registro”.

3.

Integrazione di R in Excel

RExcel può funzionare in due modi: • Aprendo la console di R nel momento in cui si avvii R da Excel (foreground); • Facendo lavorare R in background: in questo secondo caso, non sarà naturalmente possibile utilizzare la console di R per dare i comandi2. In pratica è possibile scegliere se lavorare contemporaneamente su R ed Excel, oppure se usare esclusivamente l’interfaccia di Excel. È possibile impostare questa opzione (e modificarla ogni volta che serva) con il comando “Set Server”, presente nel menu di RExcel.

3.1.

Il menu principale

In Excel, viene aggiunto un nuovo menu (Figg. 1, 2, 3), dal quale è possibile avviare e chiudere R, oppure — se è già aperta una sessione di R — connettere Excel a tale sessione.

1 Il file Rprofile.site si trova nella cartella \etc della cartella di R (a sua volta nella cartella Programmi, o Program fi les). Il file dovrebbe essere protetto da scrittura, ed è dunque necessario modificare i permessi del file stesso, cliccando con il tasto destro del mouse sul file, poi su “Proprietà” > Sicurezza. Selezionate il vostro account utente e modificate i permessi spuntando la casella “Scrittura”. A questo punto aprite il file con il Blocco note (dovrete indi care l’applicazione da usare), ignorate quello che vedete scritto, ed aggiungete in fondo la riga (deve proprio essere una nuova riga, altrimenti non funziona)
library(rcom)

2 Se non dovesse essere possibile avviare R in modalità “background”, potrebbe darsi che la libreria rcsproxy.dll non sia stata installata nella directory di R (ma in una directory personalizzata, ad es.). È sufficiente copiare la cartella del pacchetto rcsproxy, nella cartella del programma, ovvero /R/bin/i386/ (la cartella di R a 32 bit), oppure /R/bin/64/.

3

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Figura 1: RExcel e RCommander nel menu di Excel 2003

Figura 2: RExcel nel menu di Excel 2010

Figura 3: Le voci del menu di RExcel in Excel 2003

4

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

3.2.

RCommander

RCommander (Fox, 2005) è una interfaccia a menu di R, che consente di eseguire i comandi più comuni di R attraverso dei menu a tendina — senza dover utilizzare cioè le righe di comando. Oltre a prevedere numerose funzioni di base ed avanzate, è integrabile con dei plugins aggiuntivi (da installare in R, ed avviare quando servono in RCommander).

Figura 4: Excel e RCommander con i suoi menu

Figura 5: I menu di RCommander integrati in Excel

È possibile scegliere se avviare RCommander con i suoi propri menu (“with separate menus” nel menu di Rexcel, Fig. 4), oppure integrandone i menu in Excel (“with Excel menus”: Fig. 5).

5

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

4.
4.1.

Trasferimento di dati fra Excel e R
Portare una matrice dei dati da Excel a R ...

Per portare una matrice dei dati, usiamo uno dei files di esempio che possono essere installati con queste due semplici righe di comando (è necessario chiudere Excel):
install.packages("RthroughExcelWorkbooksInstaller") installRthroughExcel()

Il foglio utilizzato è “Two Columns”.

Figura 6: Pur R Dataframe

Per importare i dati in R (come dataframe), è sufficiente selezionare le celle contenenti i dati stessi, ed utilizzare il comando (anche da menu contestuale) Put R Dataframe. In questo caso, poiché si tratta di due variabili senza etichette di riga, non si deve spuntare la casella “with rownames”. In R, infatti, i rownames — nomi di riga — non sono variabili, ma, appunto, identificativi di riga. Nell’importare i dati in R, bisogna porre attenzione alla gestione dei dati mancanti ed in particolare l’interpretazione in R delle celle vuote di Excel. Per scegliere l’opzione più opportuna (cliccando sulla voce Opzioni del menu di Rexcel), bisogna tenere conto che: • • i valori #N/A di Excel vengono sempre tradotti come NA (missing values di R) gli errori di Excel possono essere tradotti come • • NA (Loose mode) NaN, Not a Number, o errore numerico, in R (Strict mode) 6 29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

le celle vuote di Excel possono essere tradotte come • • 0 (Excel mode) NA (Loose mode e Strict mode).

In sintesi: • • • in modalità Excel, i dati vengono trasferiti in base al modo in cui li interpreta Excel (le celle vuote interpretate come “0”) in modalità Strict, i dati vengono trasferiti in base al modo in cui li interpreta R (le celle vuote diventano “NA”, e gli errori “NaN”); in modalità Loose, celle vuote, dati mancanti ed errori vengono tutti interpretati come “NA”.

4.2.

… e viceversa

Un dataframe contenuto in R può essere trasferito in Excel con il comando Get R Dataframe. I dati mancanti vengono trattati come nel caso illustrato sopra.

5.

Eseguire i comandi di R in Excel (scratchpad mode)

Una volta attivato RExcel e avviato anche RCommander, è possibile eseguire un comando di R in diversi modi: 1. Eseguendo il comando con l’ausilio dei menu di RCommander. 2. Scrivendo il comando di R in una cella, selezionando la cella stessa, e poi cliccando su “Run code” (dal menu a tendina, o dal menu contestuale che appare cliccando sulla cella con il tasto destro del mouse), come in Fig. 7.

Figura 7: Run Code

3. Direttamente con il comando Get R Value (vedi §6.2). 7 29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

6.
6.1.

Recuperare il risultato ed inserirlo in Excel
Get R Output

Quando si esegue un comando da RCommander, il risultato viene visualizzato nella finestra di RCommander. Quando si esegue un comando con Run Code, il risultato resta nel workspace di R, e non viene visualizzato in Excel. Per inserire il risultato in Excel, è necessario eseguire il comando Get R Output (il comando è visbile in Fig. 7), oppure — se si è utilizzato RCommander — uno dei comandi: Rcmdr Get Last Output e Complete Output (Fig. 8).

Figura 8: Menu Rcmdr Get

In pratica, nel primo caso si recupera (get) l’output da R (R Output), nel secondo lo si recupera da RCommander (Rcmdr). I comandi eseguiti in R, infatti, non appaiono nella finestra dei risultati di RCommander. In questo modo, però, i risultati vengono recuperati “così come sono”, ovvero ottenendo un risultato non diverso da quello che otterremmo semplicemente copiando quello che appare nella finestra dei risultati di R, o di RCommander, e incollandoli in Excel (Fig. 9).

8

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Figura 9: Get R Output

6.2.

Get R Value

Per ottenere dei risultati organizzati in una forma che sia facilmente riutilizzabile in Excel, o come tabelle in altri programmi, è preferibile utilizzare il comando Get value (Fig. 10).

Figura 10: Get R Value

Come si vede, nell’esempio in Fig. 10, l’esecuzione del comando “3 + 8” restituisce il valore “11” in una cella, e non l’output di R — ovvero: [1] 8. 9 29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Ma è possibile ottenere risultati disposti nelle celle (con intestazioni di riga e di colonna, come si legge nella finestra di dialogo) anche per altri comandi. La Fig. 11, ad esempio, mostra la differenza fra le statistiche riassuntive della variabile y disposte come tabella, e come output di RCommander (e di R).

Figura 11: Statistiche riassuntive della variabile y

Inserendo nella finestra di dialogo un comando table(), si ottiene una tabella organizzata per celle, e non in testo puro, come quelle prodotte nelle finestre di R o di RCommander (Fig. 13; in questo caso, l’esempio è tratto dal foglio di lavoro “StudentData”, dopo aver caricato i dati in R).

10

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Figura 12: Le tabelle in R e in Excel

Il comando Get R Value può essere utilizzato per importare in Excel un oggetto (valore), creato in R. Ad esempio, lo stesso risultato illustrato in Fig. 12 si otterrebbe creando prima un oggetto in R:
TabEduFather <- table(StudentData$EduFather)

E poi richiamando l’oggetto inserendo nella finestra di dialogo il nome dell’oggetto — ovvero TabEduFather — anziché dare il comando per intero.

11

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Figura 13: Le tabelle in R e in Excel

7.

Modalità “scratchpad” e modalità “funzioni”. Un esempio

Utilizzando la modalità scratchpad, si ottiene il vantaggio di un facile interscambio di dati di input e di output fra R ed Excel. Per potersi pienamente avvantaggiare anche delle funzionalità di Excel, è però utile avere una idea di come funzioni la modalità “funzioni”. Com’è noto, infatti, nella celle di un foglio elettronico è possibile inserire formule ed espressioni che producono dei risultati a partire dai dati di altre celle: quando questi valori cambiano, anche i risultati delle formule cambiano automaticamente. Analogamente, è possibile utilizzare le funzioni che RExcel aggiunge ad Excel, per incorporare alcune elaborazioni nei fogli di la voro. Non essendo questa la sede per discutere delle funzioni in Excel, e delle funzionalità di R, illustriamo questa possibilità con un semplice esempio. Tornando al foglio di lavoro “Two Columns”, possiamo calcolare la media della variabile y come illustrato in Fig. 13.

12

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Figura 14: Media della variabile y

Alternativamente, se volessimo tenere costantemente aggiornati i dati del foglio, potremmo inserire una funzione all’interno di una cella, contenente una funzione che calcoli la media della colonna, anche se i valori contenuti nella colonna stessa venissero cambiati. In questo caso, peraltro, non è necessario caricare i dati in R.

Figura 15: Le funzioni di RExcel nella finestra di “Inserimento funzioni”

Per accedere al menu “Inserisci funzione” di R, bisogna cliccare sul simbolo fx accanto alla barra per l’inserimento dei dati (Fig. 15), dopo aver selezionato la cella nella quale si inserirà il risultato. 13 29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Selezionando la categoria “RExcel” compaiono tutte le funzioni messe a disposizione dal componente aggiuntivo. Per calcolare la media, possiamo utilizzare la funzione “RApply”, come mostrato in Fig. 16, ovvero indicando la funzione di R da applicare (“mean”) e le celle che contengono i dati (B2:B13). Premendo invio nella cella apparirà il risultato.

Figura 16: Calcolo della media con la funzione “RApply”

Quando i dati della variabile y cambiano, il risultato della funzione viene aggiornato (automaticamente, o premendo il tasto F9). Se R non è connesso, verrà connesso per effettuare l’aggiornamento. Con RApply possono naturalmente essere utilizzate molte delle funzioni di R, ed è chiaro che, per poterle utilizzare, bisogna conoscerne il nome e gli argomenti. Inoltre, come si vede anche in Fig. 15, RExcel mette a disposizione numerose funzioni per usare R in Excel: l’elenco è consultabile (in inglese) nella guida al programma che viene scarica insieme ai pacchetti, e che può essere scaricata in formato pdf all’indirizzo http://www.agnesevardanega.eu/metref/_media/r/r_e_gli_altri/rexcel.pdf. Vari esempi sono disponibili nel file demo “RdemoRecalc”.

8.

Gestione dei grafici

Se certamente la gestione dei grafici in Excel è molto più semplice, R offre un maggiore ventaglio di possibilità in termini di tipi di grafici disponibili e di personalizzazione possibili (cfr. ad es.: Murrell, 2006; Maindonald, 2008; Wickham, 2009).

14

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Figura 17: il dispositivo grafico di R in Excel

Per creare dei grafici in R attraverso RExcel, è possibile utilizzare il menu “Grafici” di RCommander, oppure usare le linee di comando, come nell’esempio della Fig. 17: in questo caso, la matrice “TwoColumns” è stata trasferita in R, ed è poi stato eseguito il comando
plot(TWoColumns)

con il comando Run Code (cfr. §5). Sia che si utilizzi RCommander, che si utilizzi Run Code, si aprirà il dispositivo grafico (graphic device) di R, una finestra separata, come si può vedere in Fig. 17, che consente di operare alcune modifiche ai grafici, ed esportarli in diversi altri formati. Per inserire definitivamente il grafico nel foglio Excel, si userà il comando Insert Current R Plot, che appare nel menu contestuale quando nel dispositivo grafico sia presente un grafico. Per inserire il grafico in altri programmi, è forse preferibile esportarlo nel formato più consono.

15

29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

9.

Le tabelle pivot

Infine, è possibile importare in R anche le tabelle pivot (Pivot Tables) create in Excel. L’esempio illustrato in Fig. 18, è quello del foglio demo “RdemoDev”.

Figura 18: Tabelle Pivot

Le tabelle pivot vengono importate in R come structable, e non come matrici dei dati (dataframe). Nondimeno, è possibile effettuare diverse elaborazioni sulle tabelle stesse. Nell’esempio, viene creato un grafico a matrice: 1. Creare una tabella pivot dai dati contenuti nel foglio “Pivot table” (VarA in riga, VarB in colonna, e VarA nel campo dati). Poi cliccare in una cella della tabella pivot con il tasto destro del mouse; 2. Selezionare dal menu contestuale il comando Put pivottable e dare un nome alla tabella (nell’esempio è mypivottable) 3. scrivere le righe di comando che si vogliono eseguire con Run Code. Nell’esempio:
library(vcd) mosaic(mypivottable)

creano il grafico a mosaico (utilizzando la libreria “vcd”). Se si fosse scritto ed eseguito (con Run Code o con Get R Value):
chisq.test(mypivottable)

Si sarebbe ottenuto il risultato del test del chi quadrato per la tabella. 16 29/01/13

Agnese Vardanega Università di Teramo

www.agnesevardanega.eu/metref/r/

Riferimenti bibliografici
Cryer, J. D., Should, G. G., Axes, L., & Marks, T. (2001). Problems with using Microsoft Excel for statistics. In Joint Statistical Meetings. Fox, J. (2005). The R Commander: A Basic Statistics Graphical User Interface to R. Journal of Statistical Software, 14(9), 1–42. Heiberger, R. M., & Neuwirth, E. (2009). R Through Excel: A Spreadsheet Interface for Statistics, Data Analysis, and Graphics. Springer. Iacus, S. M., & Masarotto, G. (2003). Laboratorio di statistica con R. Con CD-ROM. McGraw-Hill Companies. Maindonald, J. (2008). Lattice and Other Graphics in R. R documentation. McCullough, B. D., & Heiser, D. A. (2008). On the accuracy of statistical procedures in Microsoft Excel 2007. Computational Statistics & Data Analysis, 52(10), 4570–4578. doi:10.1016/j.csda.2008.03.004 Murrell, P. (2006). R Graphics. Chapman & Hall/CRC. Neuwirth, E. (2013). RExcelInstaller: Integration of R and Excel, (use R in Excel, read/write XLS files). Retrieved from http://CRAN.R-project.org/package=RExcelInstaller Vardanega A. et al. (2012). R per la ricerca sociale. Wiki. Retrieved from http://www.agnesevardanega.eu/metref/r/ Wickham, H. (2009). ggplot2. Elegant Graphics for Data Analysis. Springer. Yalta, A. T. (2008). The accuracy of statistical distributions in Microsoft® Excel 2007. Computational Statistics & Data Analysis, 52(10), 4579–4586. doi:10.1016/j.csda.2008.03.005 Come citare questo lavoro Vardanega, A. (2013). RExcel: breve guida all’uso. BibTex
@unpublished{vardanega_rexcel:_2013, title = {{RExcel:} breve guida all’uso}, author = {Vardanega, Agnese}, year = {2013} }

17

29/01/13

Sign up to vote on this title
UsefulNot useful