23 ottobre 2007

Importare dati in R da Excel

Sono molte le ricerche per importare dati in R da Excel che da google portano al mio blog, così ho pensato di scrivere delle indicazioni specifiche.
Innanzitutto, come più ampiamente spiegato in questo mio vecchio post, io consiglio l'utilizzo della libreria Rcmdr che permette l'importazione stile "software commerciali" direttamente da un file di Excel, Stata, Minitab, Access, ecc... .
Ma se proprio non si vuol dar retta a questo mio consiglio :-), la procedura è riportata di seguito.
Immaginando di essere in Italia in cui il separatore decimale utilizzato è la virgola, la prima cosa da fare è salvare il foglio Excel in formato testo delimitato da tabulazione. Bisogna stare attenti a non salvare in txt utilizzando il separatore delle migliaia per le variabili (colonne di Excel) aventi Numero come Formato Celle (quindi, in Excel, per le celle con formato Numero: Formato Celle > Numero e togli il segno di spunta in corrispondenza di Usa separatore delle migliaia (,) ). Sto inoltre immaginando, come penso accada in genere, che la prima riga della tabella Excel indichi il nome delle variabili.
A questo punto il codice in R è semplicemente:
x<-read.delim2("C:/miaCartella/mioFile.txt") .
Notate che nell'indicazione del percorso del file si debba usare "/" invece di "\". A questo punto x sarà il data.frame in R corrispondente alla vostra tabella di Excel.
Infine, faccio notare come il seguente comando:
x<-read.table(file="C:/miaCartella/mioFile.txt", header=TRUE, sep="\t", dec=",")
sia perfettamente equivalente al precedente (l'help in linea può aiutare a charirsi le idee).

22 ottobre 2007

Aggiornare R e R(D)COM server

In base a quanto riportato dalle FAQ per Windows e in base alle mie esperienze, riporto la procedura da eseguire per l'aggiornamento di R e di R(D)COM all'ultima versione.
Tale aggiornamento in molti casi può non essere necessario in quanto l'utente può lavorare tranquillamente con una versione "vecchia" senza rendersene conto. In tale caso, comunque, la cosa sicuramente da non fare è l'aggiornamento delle librerie. Quest'ultimo, infatti, dovrebbe sempre essere preceduto da un aggiornamento di R.
Immaginate di lavorare con la 2.4.0 (questo è un episodio reale per il quale sono stato contattato) e di aggiornare le librerie (nella RGUI: Pacchetti > Aggiorna pacchetti...). Così facendo, nella cartella "library" vi ritroverete le librerie che utilizzate normalmente, aggiornate alle versioni più recenti che, in genere, potrebbero non essere più "funzionanti" con la vecchia versione di R con la quale stavate lavorando.
Quindi, la prima cosa da fare è rimouvere R (Pannello di controllo > Installazione applicazioni > Rimuovi o direttamente con unins000.exe). Tale operazione non cancellerà via la cartella library nella quale, appunto, restano tutti i pacchetti che normalmente siete abituati ad utilizzare. In tal modo, quindi, dopo aver installato la nuova versione di R (attualmente siamo alla 2.6.0), basterà sostituire il contenuto della nuova cartella library (C:\Programmi\R\R-2.6.0\library) con il contenuto della vecchia (C:\Programmi\R\R-2.4.0\library) ed effetture l'aggiornamento dei pacchetti (nella RGUI: Pacchetti > Aggiorna pacchetti...). In tal modo vi ritroverete tutte le librerie di cui disponevate, aggiornate e compatibili con la nuova release di R. In pratica, quindi, io non andrò a sostituire l'intera cartella, ma andrò a copiare il contenuto della vecchia library e ad incollarlo nella nuova, cliccando no al messaggio di Conferma sostituzione file di Windows relativo alle librerie standard già installate assieme alla nuova release di R.
Per quanto riguarda R(D)COM, la procedura è la solita per la rimozione (Pannello di controllo > Installazione applicazioni > Rimuovi o direttamente con unins000.exe ) e la solita per l'installazione (attualmente il setup più aggiornato è RSrv250_pl1.exe). Successivamente all'installazione si può eseguire un primo test tramite lo StatConnector Test : C:\Programmi\R\(D)COMServer\samples\Simple\simple.exe > Start R. Nella totalità delle installazioni che ho eseguito si ottiene il messaggio di errore: Run time error '462': The Remote server machine does not exist or is unavailable . Il problema sta nel settaggio del registro di Windows e, senza chiedersi cosa significhi :-), il problema si risolve tramite C:\Programmi\R\R-x.x.x\bin\RSetReg.exe . Successivamente, richiamando nuovamente lo StatConnector Test (a meno di altri errori) si otterrà una serie di messaggi di informazione che confermano il corretto funzionamento di R(D)COM Server.