2010-02-27 40 views
20

Tôi có một tập tin dữ liệu với định dạng này:Không thể vẽ biểu đồ, 'x' phải có dạng số

Trọng lượng nghiệp Loại
251.787 Kellogg h
253,9601 Kellogg một
256,0758 Kellogg h
....

tôi đọc dữ liệu và cố gắng vẽ một biểu đồ với lệnh này:

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

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

hist(we) 

Nhưng tôi nhận được lỗi này: Lỗi vi hist.default (chúng tôi): 'x' phải là số.
Tôi cần làm gì để vẽ biểu đồ cho ba biến của mình?

Trả lời

15

Do nghìn dấu tách, dữ liệu sẽ được đọc là 'không phải là số'. Vì vậy, bạn cần phải chuyển đổi nó:

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

và bây giờ bạn có thể làm

hist(we) 

và các hoạt động khác số.

+1

Một sự điều chỉnh: nó không phải là ngàn phân cách, đó là dấu thập phân mà ở một số nước là một dấu phẩy. Vì vậy, nó cần phải được thay thế bằng một điểm, không bị loại bỏ. – momobo

+0

Có, tôi đã thay thế dấu phẩy cho một điểm và mọi thứ đã hoạt động. –

+1

Có một đối số 'sep =" "' to 'read.table',' read.csv', ... cho phép bạn đặt giá trị này ở mức R. –

3

Lưu ý rằng bạn cũng có thể vẽ trực tiếp từ ce (sau dấu phẩy loại bỏ) bằng cách sử dụng tên cột:

hist(ce$Weight) 

(Trái ngược với sử dụng hist(ce[1]), mà sẽ dẫn đến cùng "phải có dạng số" lỗi.)

Điều này cũng phù hợp với kết quả truy vấn cơ sở dữ liệu.

0

Sử dụng "Tháng Mười Hai" lập luận để thiết lập "" như dấu thập phân bằng cách thêm:

ce= read.table("file.txt", header= T, dec=",") 
Các vấn đề liên quan