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

Hàm mean() trong R: Bắt đầu với giá trị trung bình

Tính trung bình cho dữ liệu số, logic và có trọng số bằng các hàm mean tích hợp sẵn của R. Hiểu cách xử lý giá trị thiếu và áp dụng hàm cho vector và data frame.
· 4 phút đọc

Khám phá cùng AI

Khi tóm tắt dữ liệu số trong R, tính giá trị trung bình thường là bước đầu tiên. Ít nhất thì đó cũng thường là việc tôi làm đầu tiên. 

Giờ, “trung bình” không nhất thiết phải là trung bình cộng, nhưng trong bài viết này, tôi giả định như vậy vì tôi sẽ hướng dẫn bạn cách làm việc với hàm mean() trong R, công cụ tiêu chuẩn của R cho mục đích này. 

mean() làm gì trong R?

Hàm mean() tính trung bình số học của dữ liệu số. Nói cách khác, nó cộng tất cả các giá trị trong vector hoặc cột của bạn rồi chia cho tổng số giá trị hiện có. Vì mean() là một phần của base R, bạn không cần tải thêm gói nào. Vì vậy, nó sẵn sàng sử dụng ngay khi bạn mở R.

Cú pháp của hàm mean()

Ta đã biết mean() làm được gì, nhưng hãy xem cú pháp cơ bản để bạn có thể bắt đầu áp dụng:

mean(x, na.rm = FALSE, ...) 
  • x: Một vector hoặc đối tượng kiểu số.

  • na.rm: Logic. Nếu TRUE, mean() sẽ bỏ qua các giá trị NA.

Khi tiếp tục, hãy lưu ý rằng việc xử lý dữ liệu thiếu và làm việc với các cấu trúc dữ liệu khác nhau sẽ có vài điểm tinh tế, nên hãy để ý nhé. 

Tính trung bình của một vector số trong R

Có lẽ thao tác cơ bản nhất là tính trung bình của một vector: 

daily_temperatures <- c(72, 68, 75, 70, 69)
mean(daily_temperatures)

Dòng này trả về trung bình của 72, 68, 75, 70 và 69, tức là 70.8.

Xử lý giá trị thiếu với na.rm trong R

Bộ dữ liệu thực tế thường có giá trị thiếu. Nếu dữ liệu của bạn có mục nào bị thiếu, theo mặc định mean() sẽ trả về NA. Điều này có thể khiến bạn bất ngờ nếu không lường trước, vì vậy chúng ta dành thời gian tìm hiểu tham số na.rm.

survey_scores <- c(82, 90, NA, 88, 85)
mean(survey_scores)

Chạy đoạn này sẽ trả về NA. Để yêu cầu R bỏ qua giá trị thiếu, chỉ cần đặt na.rm = TRUE:

mean(survey_scores, na.rm = TRUE)

Giờ đây, mean() tính trung bình chỉ với các số hiện có. 

Dùng mean() với data frame trong R

Hãy mở rộng sang data frame, cấu trúc thường gặp cho bộ dữ liệu trong R. Nếu bạn muốn tính trung bình của một cột cụ thể, chỉ cần tham chiếu bằng toán tử $:

student_scores <- data.frame(
  student_name = c("Amir", "Bianca", "Carlos"),
  math_score = c(92, 85, 88)
)

mean(student_scores$math_score)

Đoạn này tính điểm trung bình cho tất cả học sinh trong data frame của bạn. Bạn có thể áp dụng cách này cho bất kỳ cột số nào (nhưng phải là cột kiểu số).

Trung bình của giá trị logic trong R

Đến giờ ta mới tập trung vào dữ liệu số, nhưng có thể bạn sẽ ngạc nhiên khi biết mean() cũng hoạt động với vector logic. Đây là một chi tiết nhỏ nhưng quan trọng mà tôi đã lướt qua đến lúc này.

Bạn có thể dùng mean() với giá trị logic vì trong R, TRUE được xem là 1 và FALSE là 0, nên lấy trung bình của một vector logic sẽ trả về tỷ lệ các giá trị TRUE. Điều này hữu ích khi bạn cần tóm tắt các kết quả nhị phân.

quiz_passed_flags <- c(TRUE, FALSE, TRUE, TRUE)
mean(quiz_passed_flags)

Ở đây, kết quả là 0.75, vì 3 trong 4 giá trị là TRUE.

Tìm trung bình có trọng số trong R 

Đôi khi bạn cần trung bình có trọng số, khi cho rằng các giá trị đóng góp không như nhau vào kết quả. Lúc đó dùng weighted.mean():

course_grades <- c(88, 92, 75)
assignment_weights <- c(0.3, 0.4, 0.3)

weighted.mean(course_grades, assignment_weights)

Bằng cách dùng weighted.mean(), bạn có thể tính đến tầm quan trọng hoặc tần suất khác nhau giữa các giá trị. mean() tự thân sẽ không làm điều này.

Một vài điều cần lưu ý

Tôi đã đề cập hầu hết các điểm này, nhưng để tôi ghi lại các vấn đề hoặc lưu ý có thể gặp ở một chỗ:

  • Dữ liệu không phải số: Nếu vector hoặc cột của bạn không phải kiểu số hoặc logic, mean() sẽ báo lỗi.

  • Xử lý NA: Quên dùng na.rm = TRUE khi có dữ liệu thiếu sẽ luôn gây rắc rối cho bạn.

  • Vector rỗng: mean(numeric(0)) trả về NA kèm cảnh báo.

Các hàm tương tự trong R

R cung cấp nhiều hàm liên quan giúp bạn khám phá dữ liệu dưới các góc độ khác nhau. Tất cả đều thuộc base R, nghĩa là bạn có thể dùng mà không cần nhập thư viện. 

  • median(): Tính trung vị

  • sd(): Độ lệch chuẩn

  • sum(): Tổng các giá trị

Nếu bạn muốn tìm hiểu thêm về tầm quan trọng của các thước đo khuynh hướng trung tâm khác nhau, hãy xem hướng dẫn rất đầy đủ của chúng tôi, Mean vs. Median: Knowing the Difference.

Kết luận

Trong hầu hết các tác vụ phân tích dữ liệu cơ bản, mean() là điểm dừng đầu tiên để tóm tắt con số.

Tiếp tục học với các khóa học của chúng tôi như Introduction to R và Exploratory Data Analysis in R.

Josef Waples

Tác giả

Josef Waples

Tôi là một cây bút và biên tập viên về khoa học dữ liệu, đã có bài đóng góp cho các nghiên cứu đăng trên tạp chí khoa học. Tôi đặc biệt quan tâm đến đại số tuyến tính, thống kê, R và các chủ đề tương tự. Tôi cũng chơi cờ vua khá thường xuyên! 

Chủ đề

Liên quan