web-dev-qa-db-fra.com

Impossible de dessiner l'histogramme, 'x' doit être numérique

J'ai un fichier de données avec ce format:

Weight    Industry Type  
251,787   Kellogg  h  
253,9601  Kellogg  a  
256,0758  Kellogg  h  
....

J'ai lu les données et j'essaie de dessiner un histogramme avec ces commandes:

 ce <- read.table("file.txt", header = TRUE)

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

hist(we)

Mais je reçois cette erreur:

Erreur en hist.default (we): 'x' doit être numérique.

Que dois-je faire pour dessiner des histogrammes pour mes trois variables?

24
José Joel.

En raison du séparateur de milliers, les données auront été lues comme "non numériques". Vous devez donc le convertir:

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

et maintenant vous pouvez faire

 hist(we)

et d'autres opérations numériques.

19
Dirk Eddelbuettel

Notez que vous pouvez également tracer directement à partir de ce (après la suppression de la virgule) en utilisant le nom de la colonne:

hist(ce$Weight)

(Par opposition à l'utilisation de hist(ce[1]), ce qui entraînerait la même erreur "doit être numérique".)

Cela fonctionne également pour un résultat de requête de base de données.

Utilisez l'argument dec pour définir "," comme point décimal en ajoutant:

 ce <- read.table("file.txt", header = TRUE, dec = ",")
3
U. Hjort