2010-02-27 24 views
20

Tengo un archivo de datos con este formato:no se puede sacar de histograma, 'x' debe ser numérico

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

que leer los datos y tratar de dibujar un histograma con estos comandos:

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

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

hist(we) 

Pero aparece este error: Error en hist.default (we): 'x' debe ser numérico.
¿Qué debo hacer para dibujar histogramas para mis tres variables?

Respuesta

15

Debido al separador de miles, los datos se leerán como 'no numéricos'. Por lo que necesita para convertirlo:

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

y ahora se puede hacer

hist(we) 

y otras operaciones numéricas.

+1

una corrección: no es el separador de miles, es el punto decimal que en algunos países es una coma. Por lo tanto, debe ser reemplazado por un punto, no eliminado. – momobo

+0

Sí, reemplacé la coma por un punto y todo funcionó. –

+1

Hay un argumento 'sep =" "' en 'read.table',' read.csv', ... que le permite configurar esto en el nivel R. –

3

Tenga en cuenta que usted podría así trazar directamente de ce (después de la coma eliminación) utilizando el nombre de la columna:

hist(ce$Weight) 

(en lugar de utilizar hist(ce[1]), lo que llevaría a la misma "debe ser numérico" error).

Esto también funciona para un resultado de consulta de base de datos.

0

uso del "DEC" argumento para establecer "" como punto decimal mediante la adición:

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