Chuyển đến nội dung chính

Các mức của factor trong R

Hướng dẫn này lấy tài liệu khóa Intro to R miễn phí của DataCamp và giúp bạn thực hành Factors.
Đã cập nhật 5 thg 10, 2026  · 6 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Nếu bạn muốn tham gia khóa Intro to R miễn phí của chúng tôi, đây là liên kết.

Các mức của factor

Khi bạn lần đầu nhận một bộ dữ liệu, bạn thường sẽ thấy nó chứa các factor với những mức (level) cụ thể. Tuy nhiên, đôi khi bạn sẽ muốn đổi tên các mức này cho rõ ràng hơn hoặc vì lý do khác. R cho phép bạn làm điều này với hàm levels():

levels(factor_vector) <- c("name1", "name2",...)

Một minh họa điển hình là dữ liệu thô được cung cấp bởi một khảo sát. Một câu hỏi phổ biến trong mọi bảng hỏi là giới tính của người trả lời. Ở đây, để đơn giản, chỉ có hai hạng mục được ghi nhận, "M" và "F". (Thường bạn sẽ cần nhiều hạng mục hơn cho dữ liệu khảo sát; dù thế nào đi nữa, bạn dùng factor để lưu trữ dữ liệu phân loại.)

survey_vector <- c("M", "F", "F", "M", "M")

Ghi giới tính bằng các ký hiệu viết tắt "M" và "F" có thể tiện khi bạn thu thập dữ liệu bằng bút và giấy, nhưng có thể gây nhầm lẫn khi phân tích dữ liệu. Lúc đó, bạn thường sẽ muốn đổi các mức của factor thành "Male" và "Female" thay vì "M" và "F" cho rõ ràng.

Lưu ý: thứ tự mà bạn gán các mức là quan trọng. Nếu bạn gõ levels(factor_survey_vector), bạn sẽ thấy nó xuất ra [1] "F" "M". Nếu bạn không chỉ định các mức của factor khi tạo vector, R sẽ tự động gán theo thứ tự bảng chữ cái. Để ánh xạ đúng "F" sang "Female" và "M" sang "Male", các mức nên được đặt là c("Female", "Male"), theo thứ tự này.

Hướng dẫn

  • Xem đoạn mã tạo một vector factor từ survey_vector. Bạn sẽ dùng factor_survey_vector ở bước tiếp theo.
  • Thay đổi các mức của factor_survey_vector thành c("Female", "Male"). Chú ý thứ tự của các phần tử trong vector.
# no pec survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Code to build factor_survey_vector survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Specify the levels of factor_survey_vector levels(factor_survey_vector) <- factor_survey_vector # Code to build factor_survey_vector survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Specify the levels of factor_survey_vector levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector msg = "Do not change the definition of survey_vector!" test_object("survey_vector", undefined_msg = msg, incorrect_msg = msg) msg = "Do not change or remove the code to create the factor vector." test_function("factor", "x", not_called_msg = msg, incorrect_msg = msg) # MC-note: ideally would want to test assign operator <-, and have it highlight whole line. # MC-note: or negate this test_student_typed, to highlight where they type this incorrect phrase # test_student_typed('c("Male", "Female")') test_object("factor_survey_vector", eq_condition = "equal", incorrect_msg = paste("Did you assign the correct factor levels to factor_survey_vector? Use levels(factor_survey_vector) <- c(\"Female\", \"Male\"). Remember that R is case sensitive!")) success_msg("Wonderful! Proceed to the next exercise.")

Chú ý thứ tự bạn phải nhập các mức của factor. Gợi ý: xem thứ tự các mức được in ra khi gõ levels(factor_survey_vector).

Tóm tắt một factor

Sau khi hoàn thành khóa học này, một trong những hàm yêu thích của bạn trong R sẽ là summary(). Hàm này sẽ cho bạn cái nhìn nhanh về nội dung của một biến:

summary(my_var)

Quay lại khảo sát của chúng ta, bạn muốn biết có bao nhiêu câu trả lời "Male" trong nghiên cứu, và bao nhiêu câu trả lời "Female". Hàm summary() sẽ cho bạn câu trả lời.

Hướng dẫn

Yêu cầu summary() cho survey_vector và factor_survey_vector. Diễn giải kết quả của cả hai vector. Trong trường hợp này, chúng có hữu ích như nhau không?

# Build factor_survey_vector with clean levels survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector # Generate summary for survey_vector # Generate summary for factor_survey_vector # Build factor_survey_vector with clean levels survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector # Generate summary for survey_vector summary(survey_vector) # Generate summary for factor_survey_vector summary(factor_survey_vector) msg = "Do not change anything about the first few lines that define survey_vector and factor_survey_vector." test_object("survey_vector", undefined_msg = msg, incorrect_msg = msg) test_object("factor_survey_vector", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg) msg <- "Have you correctly used summary() to generate a summary for %s?" test_output_contains("summary(survey_vector)", incorrect_msg = sprintf(msg, "survey_vector")) test_output_contains("summary(factor_survey_vector)", incorrect_msg = sprintf(msg, "factor_survey_vector")) success_msg("Nice! Have a look at the output. The fact that you identified \"Male\" and \"Female\" as factor levels in factor_survey_vector enables R to show the number of elements for each category.")

Gọi hàm summary() cho cả survey_vector và factor_survey_vector, đơn giản vậy thôi!

Ordered Factors

Vì "Male" và "Female" là các mức factor không có thứ tự (hay còn gọi là danh định), R trả về một cảnh báo, cho biết toán tử lớn hơn là không có ý nghĩa. Như đã thấy trước đó, R gán giá trị tương đương cho các mức đối với những factor như vậy.

Nhưng không phải lúc nào cũng vậy! Đôi khi bạn cũng sẽ làm việc với các factor có một thứ tự tự nhiên giữa các hạng mục. Nếu vậy, chúng ta phải đảm bảo truyền thông tin này cho R...

Giả sử bạn đang dẫn dắt một nhóm nghiên cứu gồm năm nhà phân tích dữ liệu và bạn muốn đánh giá hiệu suất của họ. Để làm điều này, bạn theo dõi tốc độ của họ, đánh giá mỗi nhà phân tích là "slow", "medium" hoặc "fast", và lưu kết quả vào speed_vector.

Hướng dẫn

Trước hết, gán cho speed_vector một vector gồm 5 phần tử, mỗi phần tử cho một nhà phân tích. Mỗi phần tử phải là một trong "slow", "medium" hoặc "fast". Dùng danh sách dưới đây:

  • Nhà phân tích 1 là medium,
  • Nhà phân tích 2 là slow,
  • Nhà phân tích 3 là slow,
  • Nhà phân tích 4 là medium và
  • Nhà phân tích 5 là fast.

Chưa cần chỉ định đây là factor.

# Create speed_vector speed_vector <- # Create speed_vector speed_vector <- c("medium", "slow", "slow", "medium", "fast") test_object("speed_vector", incorrect_msg = "speed_vector should be a vector with 5 entries, one for each analyst's speed rating. Don't use capital letters; R is case sensitive!") success_msg("A job well done! Continue to the next exercise.")

Gán cho speed_vector một vector chứa các chuỗi ký tự "slow", "medium" hoặc "fast".


Nếu bạn muốn học thêm từ khóa học này, đây là liên kết.

Xem Hướng dẫn Factors trong R.

Chủ đề
R
Khoa học Dữ liệu
Phân tích dữ liệu

Các khóa học R

Khóa học

Nhập môn Ngôn ngữ lập trình R

4 giờ
3.1M
Nắm vững kiến thức cơ bản về phân tích dữ liệu trong R, gồm vectors, lists và data frames; luyện tập R với các data set thực tế.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm