Giả sử bạn là giáo viên, cuối năm bạn phải làm bảng xếp loại học sinh dựa trên điểm trung bình:
Một lựa chọn khác ngoài hàm if/else trong trường hợp này là hàm cut(). Để biết chính xác các tham số và chức năng của hàm, tại liệu nên đọc nhất là hướng dẫn của R. Chỉ cần gõ ?cut() và enter bạn sẽ có cả hướng dẫn và ví dụ. Còn dưới đây là một ví dụ đơn giản của mình.
Hàm cut() nhận:
tham số đầu tiên là một vector số bạn muốn phân loại
tham số thứ hai breaks là một vector chứa các mốc bạn muốn phân loại. Trong ví dụ là các mốc 0, 35, 50, 65, 80, 100
tham số thứ ba lables (tuỳ chọn) là một vector chứa các nhãn bạn đặt cho các nhóm. Trong ví dụ của mình là “kem”, “yeu”, “trung binh”, “kha”, “gioi”
tham số thứ tư right nhận giá trị TRUE hoặc FALSE. Nếu right = TRUE thì một bạn 50 điểm được xếp loại yếu chứ không phải trung bình.
ngoài ra, còn có nhiều tham số khác.
# mình tạo ra 30 điểm trung bình trong khoảng 0-100
diemTrungBinh <- round(runif(30, 0, 100), 0)
diemTrungBinh
## [1] 94 7 93 41 28 7 68 62 20 86 35 95 88 55 4 14 58 8 66 49 63 23 29
## [24] 84 19 52 13 1 89 12
# dùng hàm cut() để xếp loại
xepLoai <- cut(diemTrungBinh,
breaks = c(0, 35, 50, 65, 80, 100),
labels = c("kem", "yeu", "trung binh", "kha", "gioi"),
right = TRUE
)
# tạo ra bảng có 2 cột và in ra màn hình
bang <- data.frame(diemTrungBinh, xepLoai)
print(bang)
## diemTrungBinh xepLoai
## 1 94 gioi
## 2 7 kem
## 3 93 gioi
## 4 41 yeu
## 5 28 kem
## 6 7 kem
## 7 68 kha
## 8 62 trung binh
## 9 20 kem
## 10 86 gioi
## 11 35 kem
## 12 95 gioi
## 13 88 gioi
## 14 55 trung binh
## 15 4 kem
## 16 14 kem
## 17 58 trung binh
## 18 8 kem
## 19 66 kha
## 20 49 yeu
## 21 63 trung binh
## 22 23 kem
## 23 29 kem
## 24 84 gioi
## 25 19 kem
## 26 52 trung binh
## 27 13 kem
## 28 1 kem
## 29 89 gioi
## 30 12 kem