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.
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:
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)Được hỗ trợ bởi
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)Được hỗ trợ bởi
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:
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ử $:
Đ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)Được hỗ trợ bởi
Ở đâ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():
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ố.
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!
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:x: Một vector hoặc đối tượng kiểu số.na.rm: Logic. NếuTRUE,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:
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.Chạy đoạn này sẽ trả về
NA. Để yêu cầu R bỏ qua giá trị thiếu, chỉ cần đặtna.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ử
$:Đ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à1vàFALSElà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.Ở đâ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():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 = TRUEkhi 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ềNAkè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ẩnsum(): 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.