R-009 factor trong R

Nội dung bài viết

factor là một những kiểu dữ liệu cơ bản của R.

Để hiểu rõ factor của R các bạn có thể đọc tài liệu chi tiết về factor bằng lệnh:

?factor

Vì ít khi được sử dụng nhiều nên phần về factor này mình sẽ đi nhanh.

factor trong R thực chất là một vector dữ liệu được lưu thêm một số thông tin mà được gọi là levels (thực ra là các giá trị phân biệt của vector đó). Ví dụ sau đây sẽ làm rõ điều này!

vec <- c(56,58,59,56,59,59)
factor.vec <- factor(vec)
factor.vec
[1] 56 58 59 56 59 59
Levels: 56 58 59

vector ban đầu có 3 giá trị phân biệt là 56, 58, 59 được gọi là các levels.

Một trong những ứng dụng quan trọng của factor là dùng một số hàm đặt biệt như tapply(...), giả sử mình có một vector thu nhập, một vector xếp loại (một tiêu chuẩn nào đó mà mình đặt ra), một hàm mà mình cần áp dụng cho các tiêu chuẩn đó:

thu.nhap <- c(1,70,5,3,25,30)
xep.loai <- c("F", "A", "C","C","B","B")
factor.xep.loai <- factor(xep.loai)
tapply(thu.nhap, factor.xep.loai, mean)
   A    B    C    F 
70.0 27.5  4.0  1.0

Lưu ý: hàm tapply(vector, index, function) với index sẽ tự chuyển thành factor bằng cách ép kiểu as.factor(...) nên bạn hoàn toàn có thể đặt indexxep.loai cũng không sao!

Kết quả trên là kết quả của R nhóm các phần tử có cùng factor sau đó thực hiện hàm function được truyền vào (trong trường hợp này là hàm mean).

Trong một số trường hợp thì hàm tapply(...) cực kì hữu ích!