Có thể đọc trực tiếp các cột CSV dưới dạng dữ liệu phân loại không?


10

Tôi cần phân tích với R dữ liệu từ một cuộc khảo sát y tế (với hơn 100 cột được mã hóa) có trong CSV. Tôi sẽ sử dụng rigs cho một số phân tích ban đầu nhưng đằng sau hậu trường vẫn là R.

Nếu tôi đọc.csv () tệp, các cột có mã số được coi là dữ liệu số. Tôi biết rằng tôi có thể tạo các cột phân loại từ chúng với hệ số () nhưng thực hiện nó cho hơn 100 cột là một điều khó khăn.

Tôi hy vọng có một cách tốt hơn để bảo R nhập các cột trực tiếp làm yếu tố. Hoặc ít nhất là để chuyển đổi chúng tại chỗ sau đó.

Cảm ơn bạn!


3
Chúng tôi rất vui khi nhận câu hỏi R ở đây. Xem meta.stats.stackexchange.com/questions/252/iêu
Rob Hyndman

Câu trả lời:


15

Bạn có thể sử dụng colClassesđối số để chỉ định các lớp của cột dữ liệu của bạn. Ví dụ:

data <- read.csv('foo.csv', colClasses=c('numeric', 'factor', 'factor'))

sẽ gán số cho cột đầu tiên, hệ số cho cột thứ hai và thứ ba. Vì bạn có rất nhiều cột, nên một phím tắt có thể là:

data <- read.csv('foo.csv', colClasses=c('numeric', rep('factor', 37), 'character'))

hoặc một số biến thể như vậy (nghĩa là gán số cho cột đầu tiên, hệ số cho 37 cột tiếp theo, sau đó ký tự cho cột cuối cùng).


Điều này cũng có thể hữu ích, nếu bạn muốn chỉ định các lớp theo tên biến (ví dụ: chỉ gán lớp cho một biến): stackoverflow.com/a/8185739/1169233
Waldir Leoncio

3

hoặc chỉ làm điều đó sau khi bạn đọc dữ liệu

dat <- read.csv("kdfjdkf")
apply(dat, 2, factor)

mặc dù loại Q này có lẽ phù hợp hơn với Stack Overflow .

chỉnh sửa : xem bên dưới.


1
Xem meta.stats.stackexchange.com/questions/252/ , sự đồng thuận hiện tại là đây là một câu hỏi thích hợp, nếu bạn không đồng ý với tiếng chuông trong meta, đừng làm khổ người hỏi mới.
russellpierce

1
ok, nhưng có lẽ bạn sẽ có một lượng khán giả lớn hơn để nhận được câu trả lời cho câu hỏi R thuần túy (ít nhất là bây giờ) - do đó, "có lẽ". "Dằn vặt" là một từ mạnh hả? :)
apeescape

1
Chắc chắn, dằn vặt là một chút mạnh mẽ; Tôi xin lỗi về điều đó. Tôi đã / đang thất vọng với những người dùng vi phạm lặp lại (trong đó bạn không phải là một người) vẫn kiên trì chuyển hướng người hỏi đến StackOverflow mà không đưa ra bất kỳ bình luận nào về meta (trong đó sự đồng thuận có vẻ khá rõ ràng).
russellpierce

Điều này có thể dẫn đến các vấn đề trong đó bạn có các cột có số 0, hỗn hợp số và giá trị bị thiếu hoặc chỉ có các giá trị 'T''F'(được chuyển đổi thành logic).
Max Candocia
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.