library(readxl)df <-read_excel(file_data[1])df <-as.data.frame(df)head(df, n =10)
STT HỌ TÊN ĐIỂM SỐ KẾT QUẢ
1 1 Nguyễn Diệp Hạnh 9 NA
2 2 Trần Nam Tuấn 5 NA
3 3 Hoàng Ngọc Liên 3 NA
4 4 Nguyễn Thị Kim Mai 10 NA
5 5 Phạm Hồng Thúy 5 NA
6 6 Vũ Việt Thư 2 NA
7 7 Phạm Ngọc Trí 8 NA
8 8 Đào Minh Hạnh 4 NA
9 9 Đỗ Minh Hưng 9 NA
10 10 Lê Phương Liên 5 NA
library(dplyr)# thứ tự điều kiện ưu tiên đi từ trên xuốngdf |> dplyr:::mutate(`KẾT QUẢ`=case_when(is.na(`ĐIỂM SỐ`) ==TRUE~"KHÔNG ĐI THI", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=9&`ĐIỂM SỐ`<=10~"GIỎI", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=7&`ĐIỂM SỐ`<9~"KHÁ", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=5&`ĐIỂM SỐ`<7~"TRUNG BÌNH KHÁ", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=3&`ĐIỂM SỐ`<5~"YẾU", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=0&`ĐIỂM SỐ`<3~"KÉM",.default =NA)) -> df_out_1# Kiểm tra kết quả xem lệnh này đã tính toán ổn trên 1 file chưahead(df_out_1, n =10)
STT HỌ TÊN ĐIỂM SỐ KẾT QUẢ
1 1 Nguyễn Diệp Hạnh 9 GIỎI
2 2 Trần Nam Tuấn 5 TRUNG BÌNH KHÁ
3 3 Hoàng Ngọc Liên 3 YẾU
4 4 Nguyễn Thị Kim Mai 10 GIỎI
5 5 Phạm Hồng Thúy 5 TRUNG BÌNH KHÁ
6 6 Vũ Việt Thư 2 KÉM
7 7 Phạm Ngọc Trí 8 KHÁ
8 8 Đào Minh Hạnh 4 YẾU
9 9 Đỗ Minh Hưng 9 GIỎI
10 10 Lê Phương Liên 5 TRUNG BÌNH KHÁ
1.2 Xử lý vòng lặp for-loop
library(openxlsx)for(i in1:length(file_data)){library(readxl)df <-read_excel(file_data[i])df <-as.data.frame(df)library(dplyr)# thứ tự điều kiện ưu tiên đi từ trên xuốngdf |> dplyr:::mutate(`KẾT QUẢ`=case_when(is.na(`ĐIỂM SỐ`) ==TRUE~"KHÔNG ĐI THI", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=9&`ĐIỂM SỐ`<=10~"GIỎI", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=7&`ĐIỂM SỐ`<9~"KHÁ", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=5&`ĐIỂM SỐ`<7~"TRUNG BÌNH KHÁ", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=3&`ĐIỂM SỐ`<5~"YẾU", (is.na(`ĐIỂM SỐ`) ==FALSE) &`ĐIỂM SỐ`>=0&`ĐIỂM SỐ`<3~"KÉM",.default =NA)) -> df_outoutput <-basename(file_data[i])output_name <-paste0("dataset/lop_7a/OUTPUT_1/", output)openxlsx:::write.xlsx(x = df_out,file = output_name)}
Cách 2. Dùng ifelse()
2.1 Xử lý chuẩn 1 file
library(readxl)df <-read_excel(file_data[1])df <-as.data.frame(df)head(df, n =10)
STT HỌ TÊN ĐIỂM SỐ KẾT QUẢ
1 1 Nguyễn Diệp Hạnh 9 NA
2 2 Trần Nam Tuấn 5 NA
3 3 Hoàng Ngọc Liên 3 NA
4 4 Nguyễn Thị Kim Mai 10 NA
5 5 Phạm Hồng Thúy 5 NA
6 6 Vũ Việt Thư 2 NA
7 7 Phạm Ngọc Trí 8 NA
8 8 Đào Minh Hạnh 4 NA
9 9 Đỗ Minh Hưng 9 NA
10 10 Lê Phương Liên 5 NA
Ta có thể import lại cùng một file được tính bằng 2 cách khác nhau để xem kết quả có giống nhau không, cho thấy dùng cách case_when() hay if-else đều được.