2010-02-27 12 views
20

Mam plik danych z tego formatu:Nie można narysować wykres, 'x' musi być liczbą

Waga Industry Typ
251787 Kellogg h
253,9601 Kellogg
256,0758 Kellogg h
....

czytam dane i spróbuj narysować histogram z tego polecenia:

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

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

hist(we) 

Ale pojawia się ten błąd: Błąd en hist.default (we): 'x' musi być numeryczne.
Co muszę zrobić, aby narysować histogram dla trzech zmiennych?

Odpowiedz

15

Z powodu separatora tysięcy, dane zostaną odczytane jako "nieliczbowe". Więc trzeba je konwertować:

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

a teraz można zrobić

hist(we) 

i inne operacje numeryczne.

+1

korekta: to nie separatora tysięcy, to jest punkt dziesiętny, że w niektórych krajach jest przecinek. Więc musi zostać zastąpiony przez punkt, a nie usunięty. – momobo

+0

Tak, zastąpiłem przecinek za punkt i wszystko działało. –

+1

Istnieje argument "sep =" "' do 'read.table',' read.csv', ... który pozwala ustawić to na poziomie R. –

3

Uwaga, które mogłyby równie dobrze można wykreślić bezpośrednio od ce (po przecinku usuwania) używając nazwy kolumna:

hist(ce$Weight) 

(w przeciwieństwie do używania hist(ce[1]), które prowadzą do tego samego „musi być numeryczny” błąd.)

Działa to również w przypadku wyniku zapytania do bazy danych.

0

użyć „grudzień” argument set „” jako separator dziesiętny, dodając:

ce= read.table("file.txt", header= T, dec=",") 
Powiązane problemy