Vấn đề chuyển đổi từ yếu tố sang biến số trong R [đóng]


11

Tôi muốn chuyển đổi một yếu tố thành một số nhưng as.numerickhông có hiệu quả như tôi mong đợi.

Dưới đây tôi nhận được số liệu thống kê tóm tắt cho phiên bản số của biến dựa trên biến ban đầu. Các phương tiện tiếp tục đếm lên 1 ... có lẽ (ông suy đoán) các cấp của yếu tố có cả tên và số và tôi hy vọng giá trị của biến mới sẽ đến từ tên khi as.numericđược thiết kế để sử dụng số?

> describe.by(as.numeric(df$sch), df$sch)

group: 
  var    n mean sd median trimmed mad min max range skew kurtosis se
1   1 5389    1  0      1       1   0   1   1     0  NaN      NaN  0
--------------------------------------------------------- 
group: 001
  var  n mean sd median trimmed mad min max range skew kurtosis se
1   1 19    2  0      2       2   0   2   2     0  NaN      NaN  0
--------------------------------------------------------- 
group: 002
  var  n mean sd median trimmed mad min max range skew kurtosis se
1   1 54    3  0      3       3   0   3   3     0  NaN      NaN  0
--------------------------------------------------------- 

1
Tôi đã xóa các thẻ mới mà bạn đã thêm; chúng dường như quá chung chung và không phân biệt đối xử, hoặc trong trường hợp as.factor quá hẹp (vì đó là một chức năng trong cơ sở R). Vui lòng thử lại nếu bạn nghĩ bất cứ điều gì đã mất.
JMS

Câu trả lời:


28

Điều đó là chính xác: as.numeric(factor)trả về số mà R gán cho mức của yếu tố đó. Bạn có thể thửas.numeric(as.character(factor))


4
Như câu trả lời này cho thấy stackoverflow.com/a/3418192/476907 as.numeric(levels(f))[f] được khuyến khích và hơi hiệu quả hơnas.numeric(as.character(f))
discipulus

Cảm ơn bạn! Câu trả lời này đã giúp tôi rất nhiều :)
Yasha

13

Đây là Câu hỏi thường gặp 7.10 trong R Câu hỏi thường gặp. Có, một yếu tố được lưu trữ dưới dạng các số nguyên từ 1 đến số cấp và as.numeric đưa ra các mã cơ bản. Câu hỏi thường gặp cung cấp 2 cách để chuyển đổi sang số.

Tuy nhiên, điều này thường là do khi bạn đọc dữ liệu trong dữ liệu của mình, điều đó khiến R coi nó là một yếu tố thay vì số (thường là một ký tự không phải là số). Thường là tốt hơn để sửa dữ liệu thô (chuyển đổi sẽ chuyển đổi phần không phải là số thành NA) hoặc sử dụng đối số colClass nếu sử dụng read.table hoặc tương tự.


1
values.tmp <- sapply (possibleValues, as.numeric); values.nonnumeric <- values.tmp [is.na (values.tmp)]
russellpierce
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.