2010-02-27 19 views
20

Ho un file di dati con questo formato:non può disegnare Istogramma, 'x' deve essere numerico

Industria Peso Tipo
251.787 Kellogg h
253,9601 Kellogg un
256,0758 Kellogg h
....

ho letto i dati e cercare di disegnare un istogramma con questi comandi:

ce= read.table("file.txt", header= T) 

we = ce[,1] 
in = ce[,2] 
ty = ce[,3] 

hist(we) 

Ma ottengo questo errore: Errore en hist.default (we): 'x' deve essere numerico.
Cosa devo fare per disegnare gli istogrammi per le mie tre variabili?

risposta

15

A causa del separatore delle migliaia, i dati saranno stati letti come "non numerici". Quindi è necessario convertirlo:

we <- gsub(",", "", we) # remove comma 
we <- as.numeric(we)  # turn into numbers 

e ora si può fare

hist(we) 

e altre operazioni numeriche.

+1

una correzione: non è il separatore delle migliaia, è il punto decimale che in alcuni paesi è una virgola. Quindi deve essere sostituito da un punto, non rimosso. – momobo

+0

Sì, ho sostituito la virgola per un punto e tutto ha funzionato. –

+1

C'è un argomento 'sep =" "' a 'read.table',' read.csv', ... che consente di impostarlo a livello R. –

3

Nota che si potrebbe pure tracciare direttamente da ce (dopo la virgola rimozione) utilizzando il nome della colonna:

hist(ce$Weight) 

(anziché utilizzare hist(ce[1]), che porterebbe alla stessa "deve essere numerico" errore.)

Questo funziona anche per un risultato di query del database.

0

usare l'argomento "DEC" per impostare "" come il punto decimale con l'aggiunta di:

ce= read.table("file.txt", header= T, dec=",") 
Problemi correlati