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

Hướng dẫn Factors trong R

Tìm hiểu về hàm factor trong R, kèm ví dụ, cùng cấu trúc, thay đổi thứ tự levels, đổi tên levels, và cuối cùng là sắp thứ tự các giá trị phân loại.
· 5 phút đọc

Khám phá cùng AI

banner

Factor là kiểu biến trong R dùng cho biến phân loại (categorical), lưu trữ dữ liệu theo các level. Chức năng chính của nó thường thấy trong phân tích dữ liệu, đặc biệt là phân tích thống kê. Ngoài ra, nó giúp giảm dư thừa dữ liệu và tiết kiệm đáng kể bộ nhớ.

Lưu ý: Biến phân loại là những biến nhận giá trị dựa trên nhãn hoặc tên. Ví dụ, nhóm máu của con người có thể là A, B, AB hoặc O.

hàm factor

Cách dùng: Phân loại dữ liệu có ít giá trị khác nhau.
Tham số: factor(v): v có thể là một vector giá trị.

Hãy xem ví dụ về factor trong thực tế.

Bạn có thể xem đoạn mã dưới đây, nơi có hai biến phân loại là "Male" và "Female", còn gọi là các giá trị factor.

gender <- c("Male","Female","Female","Male","Female")

Hãy tạo một factor cho biến gender bằng cách dùng 'factor(gender)' và lưu vào biến 'gender.factor'.

gender.factor <- factor(gender)
gender.factor
  1. Male
  2. Female
  3. Female
  4. Male
  5. Female
Levels:
  1. 'Female'
  2. 'Male'

Đoạn mã trên cho ra kết quả như dưới đây:

Male Female Female Male Female
Levels:
'Female' 'Male'

Bạn có thể thấy các giá trị được in ra giống hệt vector đầu vào. Ngoài ra, các 'Levels' là 'Female' và 'Male' được sắp theo thứ tự bảng chữ cái.

Cấu trúc của hàm factor

Hãy kiểm tra cấu trúc của factor bằng cách dùng 'str(gender.factor)' trong đoạn mã dưới.

str(gender.factor)
 Factor w/ 2 levels "Female","Male": 2 1 1 2 1 
Factor w/ 2 levels "Female","Male": 2 1 1 2 1

Kết quả trên cho thấy có một factor với 2 level. factor chuyển vector ký tự gender thành một vector các giá trị số nguyên. "Female" là level thứ nhất được mã hóa là 1, còn "Male" là level thứ hai, mã hóa là 2.

Mục đích chính của việc mã hóa từ ký tự sang số là vì các hạng mục có thể lặp lại, gây dư thừa và tốn nhiều bộ nhớ. Sử dụng factor giúp giảm gánh nặng và tiết kiệm không gian bộ nhớ.

Thay đổi thứ tự Levels

Hãy thay đổi thứ tự levels để "Female" trở thành 2 và "Male" là 1.

Tạo một factor mới cho gender bằng cách thay đổi level của "Male" và "Female" bằng cách truyền vào vector cho tham số "levels". Cuối cùng, kết quả được lưu vào biến "gender.factor2".

gender.factor2 <- factor(gender,levels=c("Male","Female"))
gender.factor2
str(gender.factor2)
  1. Male
  2. Female
  3. Female
  4. Male
  5. Female
Levels:
  1. 'Male'
  2. 'Female'
 Factor w/ 2 levels "Male","Female": 1 2 2 1 2

'gender.factor2' được in ra cùng với cấu trúc của nó dùng 'str(gender.factor2)', trong đó có thể thấy các thay đổi sau.

Male Female Female Male Female
 Levels:
'Male' 'Female'
 Factor w/ 2 levels "Male","Female": 1 2 2 1 2

Kết quả cho thấy mã hóa của "Male" là 1 và "Female" là 2. Điều này khác với 'gender.factor', nơi thứ tự ngược lại.

Đổi tên các level của Factor

Hãy đổi tên các giá trị vector đầu vào bằng cách dùng 'levels' làm đối số thứ nhất với các giá trị "Male" và "Female" và các giá trị mong muốn sau khi đổi bằng 'labels' làm đối số thứ hai với "Gen_Male" và "Gen_Female" tương ứng.

factor(gender,levels = c("Male","Female"),labels = c("Gen_Male","Gen_Female"))
  1. Gen_Male
  2. Gen_Female
  3. Gen_Female
  4. Gen_Male
  5. Gen_Female
Levels:
  1. 'Gen_Male'
  2. 'Gen_Female'
Gen_Male Gen_Female Gen_Female Gen_Male Gen_Female
 Levels:
'Gen_Male' 'Gen_Female'

Đoạn mã trên cho ra kết quả trong đó tên "Male" được đổi thành "Gen_Male" và "Female" thành "Gen_Female".

Sắp thứ tự một biến phân loại

Hãy xem một ví dụ khác với các giá trị phân loại có thứ bậc, nơi thứ tự có ý nghĩa. Ví dụ, kích cỡ quần có thể gồm Large là "L", Extra Large là "XL" và Extra extra Large là "XXL" được sắp theo thứ tự tăng dần. Đoạn mã dưới đây tạo một vector ký tự gồm "L", "XL" và "XXL" và lưu vào 'pant'. 'pant.factor' là biến có tham số levels được sắp tăng dần là 'levels = c("L", "XL", "XXL")' và cuối cùng 'ordered = TRUE', giúp bạn có thể so sánh theo thứ tự mong muốn.

pant <- c("XL","L","XL","XXL","L","XL")
pant.factor <- factor(pant,ordered = TRUE,levels = c("L","XL","XXL"))
pant.factor
pant.factor[1] > pant.factor[2]
  1. XL
  2. L
  3. XL
  4. XXL
  5. L
  6. XL
Levels:
  1. 'L'
  2. 'XL'
  3. 'XXL'

TRUE

XL L XL XXL L XL
 Levels:'L'< 'XL' < 'XXL'
TRUE

Kết quả trên trước hết hiển thị các giá trị vector (XL, L, XL, XXL, L, XL) bằng 'pant.factor'. Các level 'L' < 'XL' < 'XXL' được sắp theo thứ tự tăng dần và được in ra trên console. Ngoài ra, 'pant.factor[1] > pant.factor[2]' so sánh xem "XL" có lớn hơn "L" hay không và trả về TRUE.

Chúc mừng

Chúc mừng bạn đã hoàn thành bài hướng dẫn này!

Trong hướng dẫn này, bạn đã tìm hiểu hàm factor trong R, kèm ví dụ, cấu trúc, thay đổi thứ tự level, đổi tên level và cuối cùng là sắp thứ tự các giá trị phân loại.

Nếu bạn muốn học thêm về R, hãy tham gia khóa học Giới thiệu về R của DataCamp.

Xem thêm hướng dẫn Sử dụng hàm trong R.
 

Chủ đề

Liên quan