Chúng ta đặt na.rm = TRUE trong các hàm R thường dùng để loại trừ giá trị thiếu (NA). Việc này giúp tính toán thống kê chính xác và tăng độ tin cậy cho kết quả.
Dữ liệu đang được tạo ra và tiêu thụ với tốc độ công nghiệp để thúc đẩy các quyết định kinh doanh quan trọng. Tuy nhiên, một thách thức phổ biến trong phân tích dữ liệu là sự xuất hiện của các giá trị thiếu. Điều này có thể làm sai lệch kết quả, khiến bất kỳ nhà phân tích dữ liệu nào cũng buộc phải xử lý chúng hiệu quả. Trong R, một trong những công cụ cơ bản để quản lý giá trị thiếu là tham số na.rm.
Bài viết này giải thích tầm quan trọng của việc xử lý dữ liệu thiếu, cách na.rm trong R hoạt động, minh họa việc sử dụng trong nhiều hàm khác nhau và kết thúc bằng việc thảo luận một số kỹ thuật thay thế để nhận diện và xử lý dữ liệu thiếu.
Câu trả lời ngắn gọn: na.rm là gì?
Tham số na.rm trong R là viết tắt của "loại bỏ NA" và bỏ qua các giá trị NA (thiếu) trong quá trình tính toán. Bằng cách đặt na.rm = TRUE, các hàm như mean(), sum(), min(), max(), median() và sd() sẽ tính kết quả mà không bị ảnh hưởng bởi giá trị thiếu.
Tham số na.rm, được viết thường, nhận giá trị Boolean—TRUE hoặc FALSE. Khi đặt na.rm = TRUE, R sẽ loại trừ các giá trị NA khỏi phép tính. Nếu không có tham số này, các hàm sẽ trả về NA nếu dữ liệu có chứa giá trị thiếu. Xem ví dụ.
vector_with_na <- c(1,2,NA)
sum(vector_with_na, na.rm =TRUE)# removes NA values — returns 3
sum(vector_with_na)# includes NA values — returns NA
sum(vector_with_na, na.rm =FALSE)# includes NA values — returns NAĐược hỗ trợ bởi
Xem khóa học Introduction to R để tìm hiểu thêm về lập trình R cơ bản.
Vì sao nên dùng na.rm?
Xử lý giá trị thiếu rất quan trọng trong phân tích dữ liệu để đảm bảo kết quả chính xác, vì chúng có thể ảnh hưởng đáng kể đến các phép tính thống kê, vô tình dẫn đến kết luận sai. Sử dụng na.rm giúp thuận tiện tránh lỗi bằng cách bỏ qua các giá trị thiếu, từ đó thực hiện tính toán đáng tin cậy và duy trì tính toàn vẹn dữ liệu.
Khóa học Data Cleaning in R sẽ hữu ích để nâng cao kỹ năng phân tích dữ liệu của chúng ta.
Các hàm thường dùng với na.rm: Một vài ví dụ thực tiễn
Giờ hãy tìm hiểu cách dùng na.rm trong R. Nhiều hàm R tích hợp tham số na.rm (mặc định là FALSE). Dưới đây là một số ví dụ phổ biến:
sum()
Đúng như tên gọi, sum() tính tổng các giá trị trong một vector. Hãy tạo một vector tên vector_with_na, mà chúng ta sẽ dùng xuyên suốt hướng dẫn này.
vector_with_na <- c(1,2,NA,4)
sum(vector_with_na)# Returns NA
sum(vector_with_na, na.rm =TRUE)# Returns 7Được hỗ trợ bởi
mean()
Với cùng ví dụ, hàm mean() tính trung bình, tức giá trị trung bình của các phần tử trong vector.
mean(vector_with_na)# Returns NA
mean(vector_with_na, na.rm =TRUE)# Returns 2.33Được hỗ trợ bởi
sd()
Tiếp tục với vector_with_na, sd() tính độ lệch chuẩn của vector.
sd(vector_with_na)# Returns NA
sd(vector_with_na, na.rm =TRUE)# Returns 1.53Được hỗ trợ bởi
min()
min() tìm giá trị nhỏ nhất.
min(vector_with_na)# Returns NA
min(vector_with_na, na.rm =TRUE)# Returns 1Được hỗ trợ bởi
max()
max() tìm giá trị lớn nhất.
max(vector_with_na)# Returns NA
max(vector_with_na, na.rm =TRUE)# Returns 4Được hỗ trợ bởi
median()
median() tìm giá trị ở giữa khi sắp xếp theo thứ tự.
median(vector_with_na)# Returns NA
median(vector_with_na, na.rm =TRUE)# Returns 2Được hỗ trợ bởi
Lưu ý rằng nếu không có na.rm = TRUE thì tất cả các hàm tổng hợp này sẽ trả về NA.
Bằng cách đặt na.rm = TRUE, các hàm này loại trừ giá trị NA, giúp tính toán chính xác và có ý nghĩa. Lộ trình kỹ năng R Programming Fundamentals có thể là nguồn tài liệu tốt để hiểu rõ hơn cách dùng và cú pháp của các hàm này.
Xử lý giá trị thiếu trong các cấu trúc dữ liệu khác nhau
Hãy xem cách xử lý giá trị thiếu trong các cấu trúc dữ liệu khác nhau. Trước khi tiếp tục, hãy xem hướng dẫn Làm chủ cấu trúc dữ liệu trong ngôn ngữ lập trình R nếu bạn muốn tìm hiểu thêm về cấu trúc dữ liệu trong R.
Vector
Trong vector, na.rm có thể được dùng trực tiếp trong các hàm để loại trừ giá trị thiếu. Các ví dụ ở phần trước đều là minh họa cho na.rm khi áp dụng trên vector.
Data frame
Với data frame, có thể áp dụng na.rm trong các hàm dùng cho cột cụ thể hoặc trên các hàng bằng apply() như dưới đây:
Hàm lapply() trong R dùng để áp dụng một hàm xác định cho từng phần tử của list, vector hoặc data frame, và trả về một list có cùng độ dài. Hàm này không cần tham số MARGIN, vì nó tự động áp dụng phép toán cho tất cả phần tử.
vector_with_na: List, vector hoặc data frame đầu vào.
fun: Hàm sẽ được áp dụng cho từng phần tử dữ liệu đầu vào.
Hãy hiểu lapply() qua ví dụ về list. Ở đây chúng ta có một list các nhóm (item_1 và item_2) với các phần tử tương tự data frame (dataframe_with_na). Mục tiêu là tìm trung bình của mỗi nhóm.
Hàm sapply() tương tự lapply() nhưng trả về một mảng hoặc ma trận thay vì list. Hãy dùng list (list_with_na) và sapply() để tính trung bình các giá trị của mỗi nhóm bên trong.
sapply(list_with_na, mean)# Returns# a b # NA NA
sapply(list_with_na, mean, na.rm =TRUE)# Returns# a b # 3.333333 5.333333Được hỗ trợ bởi
Giờ, hãy dùng data frame (dataframe_with_na) và sapply() để tính tổng các giá trị của từng cột.
sapply(dataframe_with_na, sum)# Returns# col1 col2 # NA NA
sapply(dataframe_with_na, sum, na.rm=TRUE)# Returns# col1 col2 # 10 16Được hỗ trợ bởi
complete.cases(): Ngược lại, complete.cases() xác định các hàng không có bất kỳ giá trị NA nào và trả về một giá trị boolean tương ứng với mỗi hàng (FALSE cho hàng có NA và ngược lại). Có thể dùng để lọc các giá trị không thiếu trong data frame như dưới đây.
Thú vị là hàm summary() khác với việc dùng na.rm để xử lý giá trị thiếu. Mặc định, summary() tự động loại trừ các giá trị thiếu khi tính thống kê tóm tắt và đồng thời báo cáo số lượng NA có trong dữ liệu.
Hãy chạy summary() trên vector vector_with_na:
summary(vector_with_na)#Returns# Min. 1st Qu. Median Mean 3rd Qu. Max. NA's # 1.000 1.500 2.000 2.333 3.000 4.000 1Được hỗ trợ bởi
Và trên data frame dataframe_with_na:
summary(dataframe_with_na)# Returns# col1 col2 # Min. :1.00 Min. :4.00 # 1st Qu.:2.50 1st Qu.:4.75 # Median :3.00 Median :5.00 # Mean :3.25 Mean :5.25 # 3rd Qu.:3.75 3rd Qu.:5.50 # Max. :6.00 Max. :7.00 Được hỗ trợ bởi
Khóa học Intermediate R cung cấp kiến thức chuyên sâu cho những ai quan tâm đến các kỹ thuật xử lý dữ liệu nâng cao.
Thực hành tốt nhất khi xử lý giá trị thiếu
Xử lý giá trị thiếu hiệu quả bao gồm một số thực hành tốt nhất:
Luôn kiểm tra giá trị thiếu
Xác định và hiểu mức độ dữ liệu thiếu trước khi thực hiện tính toán. Ví dụ dưới đây cho thấy data frame có tổng cộng 2 giá trị thiếu.
Hiểu vì sao dữ liệu bị thiếu và chọn phương pháp xử lý phù hợp — loại bỏ hay thế giá trị.
Để có cách tiếp cận có hệ thống trong phân tích dữ liệu và xử lý giá trị thiếu, khóa học Data Cleaning in Rcó thể là nguồn tài liệu tuyệt vời.
Kết luận
Hiểu và sử dụng na.rm là chìa khóa để đảm bảo phân tích dữ liệu đáng tin cậy và chính xác. Hãy thực hành dùng na.rm trong các dự án R và khám phá các kỹ thuật nâng cao để xử lý toàn diện dữ liệu thiếu.
Để học thêm, hãy khám phá các tài nguyên sau:
Làm sạch dữ liệu: Nâng cao kỹ năng phân tích dữ liệu với khóa học Data Cleaning in R.
Tôi là một Chiến lược gia và Nhà đạo đức học về AI, làm việc tại giao điểm giữa khoa học dữ liệu, sản phẩm và kỹ thuật để xây dựng các hệ thống máy học có khả năng mở rộng. Được xếp hạng trong danh sách “Top 200 Nhà đổi mới trong Kinh doanh và Công nghệ” trên thế giới, tôi theo đuổi sứ mệnh dân chủ hóa máy học và giản lược thuật ngữ chuyên môn để mọi người đều có thể tham gia vào quá trình chuyển đổi này.
Câu hỏi thường gặp
na.rm trong R là gì?⌄
Tham số na.rm trong R là viết tắt của "loại bỏ NA". Khi đặt TRUE, nó yêu cầu các hàm bỏ qua giá trị NA (thiếu) trong quá trình tính toán, đảm bảo kết quả chính xác.
Cách dùng na.rm trong các hàm R thường gặp như thế nào?⌄
Bạn có thể dùng na.rm trong các hàm như sum(), mean(), sd(), min(), max() và median() bằng cách đặt na.rm = TRUE để loại trừ giá trị thiếu khỏi phép tính.
Vì sao việc xử lý giá trị thiếu lại quan trọng trong phân tích dữ liệu?⌄
Giá trị thiếu có thể làm sai lệch kết quả và dẫn đến kết luận không chính xác. Xử lý chúng hiệu quả sẽ đảm bảo tính toán đáng tin cậy và duy trì tính toàn vẹn dữ liệu.
Có thể dùng na.rm với data frame và list trong R không?⌄
Có, na.rm có thể dùng với data frame thông qua các hàm như apply(), và với list bằng lapply() và sapply(), để loại trừ giá trị thiếu khi thao tác trên các cấu trúc dữ liệu này.
Một số kỹ thuật nâng cao để xử lý giá trị thiếu trong R là gì?⌄
Ngoài na.rm, các kỹ thuật nâng cao gồm có dùng is.na() để nhận diện giá trị thiếu, áp dụng các phương pháp thế giá trị để thay thế chúng, và tận dụng các hàm như na.omit() và complete.cases() cho các tác vụ làm sạch dữ liệu phức tạp hơn.
Dữ liệu đang được tạo ra và tiêu thụ với tốc độ công nghiệp để thúc đẩy các quyết định kinh doanh quan trọng. Tuy nhiên, một thách thức phổ biến trong phân tích dữ liệu là sự xuất hiện của các giá trị thiếu. Điều này có thể làm sai lệch kết quả, khiến bất kỳ nhà phân tích dữ liệu nào cũng buộc phải xử lý chúng hiệu quả. Trong R, một trong những công cụ cơ bản để quản lý giá trị thiếu là tham số
na.rm.Bài viết này giải thích tầm quan trọng của việc xử lý dữ liệu thiếu, cách
na.rmtrong R hoạt động, minh họa việc sử dụng trong nhiều hàm khác nhau và kết thúc bằng việc thảo luận một số kỹ thuật thay thế để nhận diện và xử lý dữ liệu thiếu.Câu trả lời ngắn gọn: na.rm là gì?
Tham số
na.rmtrong R là viết tắt của "loại bỏ NA" và bỏ qua các giá trịNA(thiếu) trong quá trình tính toán. Bằng cách đặtna.rm = TRUE, các hàm nhưmean(),sum(),min(),max(),median()vàsd()sẽ tính kết quả mà không bị ảnh hưởng bởi giá trị thiếu.Tham số
na.rm, được viết thường, nhận giá trị Boolean—TRUEhoặcFALSE. Khi đặtna.rm = TRUE, R sẽ loại trừ các giá trịNAkhỏi phép tính. Nếu không có tham số này, các hàm sẽ trả vềNAnếu dữ liệu có chứa giá trị thiếu. Xem ví dụ.Xem khóa học Introduction to R để tìm hiểu thêm về lập trình R cơ bản.
Vì sao nên dùng na.rm?
Xử lý giá trị thiếu rất quan trọng trong phân tích dữ liệu để đảm bảo kết quả chính xác, vì chúng có thể ảnh hưởng đáng kể đến các phép tính thống kê, vô tình dẫn đến kết luận sai. Sử dụng
na.rmgiúp thuận tiện tránh lỗi bằng cách bỏ qua các giá trị thiếu, từ đó thực hiện tính toán đáng tin cậy và duy trì tính toàn vẹn dữ liệu.Khóa học Data Cleaning in R sẽ hữu ích để nâng cao kỹ năng phân tích dữ liệu của chúng ta.
Các hàm thường dùng với na.rm: Một vài ví dụ thực tiễn
Giờ hãy tìm hiểu cách dùng
na.rmtrong R. Nhiều hàm R tích hợp tham sốna.rm(mặc định làFALSE). Dưới đây là một số ví dụ phổ biến:sum()
Đúng như tên gọi,
sum()tính tổng các giá trị trong một vector. Hãy tạo một vector tênvector_with_na, mà chúng ta sẽ dùng xuyên suốt hướng dẫn này.mean()
Với cùng ví dụ, hàm
mean()tính trung bình, tức giá trị trung bình của các phần tử trong vector.sd()
Tiếp tục với
vector_with_na,sd()tính độ lệch chuẩn của vector.min()
min()tìm giá trị nhỏ nhất.max()
max()tìm giá trị lớn nhất.median()
median()tìm giá trị ở giữa khi sắp xếp theo thứ tự.Lưu ý rằng nếu không có
na.rm = TRUEthì tất cả các hàm tổng hợp này sẽ trả vềNA.Bằng cách đặt
na.rm = TRUE, các hàm này loại trừ giá trịNA, giúp tính toán chính xác và có ý nghĩa. Lộ trình kỹ năng R Programming Fundamentals có thể là nguồn tài liệu tốt để hiểu rõ hơn cách dùng và cú pháp của các hàm này.Xử lý giá trị thiếu trong các cấu trúc dữ liệu khác nhau
Hãy xem cách xử lý giá trị thiếu trong các cấu trúc dữ liệu khác nhau. Trước khi tiếp tục, hãy xem hướng dẫn Làm chủ cấu trúc dữ liệu trong ngôn ngữ lập trình R nếu bạn muốn tìm hiểu thêm về cấu trúc dữ liệu trong R.
Vector
Trong vector,
na.rmcó thể được dùng trực tiếp trong các hàm để loại trừ giá trị thiếu. Các ví dụ ở phần trước đều là minh họa chona.rmkhi áp dụng trên vector.Data frame
Với data frame, có thể áp dụng
na.rmtrong các hàm dùng cho cột cụ thể hoặc trên các hàng bằngapply()như dưới đây:Trong đó:
X: một mảng, data frame, hoặc ma trậnMARGIN: đối số xác định nơi áp dụng hàm:MARGIN=1để thao tác theo hàngMARGIN=2để thao tác theo cộtMARGIN=c(1,2)để thao tác cả hàng và cộtFUN: chỉ định hàm sẽ áp dụng. Có thể dùng các hàm dựng sẵn nhưmean(),median(),sum(),min(),max(), và các hàm tự định nghĩa.Hãy tạo một data frame để tham chiếu trong suốt hướng dẫn này.
List
Hàm
lapply()trong R dùng để áp dụng một hàm xác định cho từng phần tử của list, vector hoặc data frame, và trả về một list có cùng độ dài. Hàm này không cần tham sốMARGIN, vì nó tự động áp dụng phép toán cho tất cả phần tử.Cú pháp:
Trong đó:
: List, vector hoặc data frame đầu vào.vector_with_nafun: Hàm sẽ được áp dụng cho từng phần tử dữ liệu đầu vào.Hãy hiểu
lapply()qua ví dụ về list. Ở đây chúng ta có một list các nhóm (item_1vàitem_2) với các phần tử tương tự data frame (dataframe_with_na). Mục tiêu là tìm trung bình của mỗi nhóm.Hàm
sapply()tương tựlapply()nhưng trả về một mảng hoặc ma trận thay vì list. Hãy dùng list (list_with_na) vàsapply()để tính trung bình các giá trị của mỗi nhóm bên trong.Giờ, hãy dùng data frame (
dataframe_with_na) vàsapply()để tính tổng các giá trị của từng cột.Để hiểu rộng hơn về thao tác dữ liệu trong R, khóa học Data Manipulation with dplyr rất được khuyến nghị. Nếu bạn còn chưa vững nhóm hàm apply(), hãy đọc Hướng dẫn về họ hàm Apply trong R của chúng tôi.
So sánh với na.omit() và complete.cases()
na.omit(): Hàm này loại bỏ toàn bộ các hàng chứa giá trịNAtrong data frame. Hãy hiểu bằng ví dụ:complete.cases(): Ngược lại,complete.cases()xác định các hàng không có bất kỳ giá trịNAnào và trả về một giá trị boolean tương ứng với mỗi hàng (FALSEcho hàng cóNAvà ngược lại). Có thể dùng để lọc các giá trị không thiếu trong data frame như dưới đây.Kỹ thuật nâng cao để xử lý giá trị thiếu
Ngoài
na.rm, R còn cung cấp các phương pháp nâng cao để xử lý dữ liệu thiếu:Dùng is.na() để nhận diện giá trị thiếu
is.na()có thể áp dụng trực tiếp lên vector hoặc data frame để nhận diện dữ liệu thiếu. Hàm trả vềTRUEtương ứng với mỗi giá trị thiếu.Áp dụng các phương pháp thế giá trị (imputation)
Imputation thay thế các giá trị thiếu bằng giá trị ước tính, như trung bình hoặc trung vị, như dưới đây:
Dùng hàm summary()
Thú vị là hàm
summary()khác với việc dùngna.rmđể xử lý giá trị thiếu. Mặc định,summary()tự động loại trừ các giá trị thiếu khi tính thống kê tóm tắt và đồng thời báo cáo số lượngNAcó trong dữ liệu.Hãy chạy
summary()trên vectorvector_with_na:Và trên data frame
dataframe_with_na:Khóa học Intermediate R cung cấp kiến thức chuyên sâu cho những ai quan tâm đến các kỹ thuật xử lý dữ liệu nâng cao.
Thực hành tốt nhất khi xử lý giá trị thiếu
Xử lý giá trị thiếu hiệu quả bao gồm một số thực hành tốt nhất:
Luôn kiểm tra giá trị thiếu
Xác định và hiểu mức độ dữ liệu thiếu trước khi thực hiện tính toán. Ví dụ dưới đây cho thấy data frame có tổng cộng 2 giá trị thiếu.
Dùng kiểm tra điều kiện
Luôn xác minh sự hiện diện của dữ liệu thiếu và áp dụng các kỹ thuật thế giá trị phù hợp, đảm bảo xử lý tốt mọi trường hợp biên.
Cân nhắc ngữ cảnh
Hiểu vì sao dữ liệu bị thiếu và chọn phương pháp xử lý phù hợp — loại bỏ hay thế giá trị.
Để có cách tiếp cận có hệ thống trong phân tích dữ liệu và xử lý giá trị thiếu, khóa học Data Cleaning in R có thể là nguồn tài liệu tuyệt vời.
Kết luận
Hiểu và sử dụng
na.rmlà chìa khóa để đảm bảo phân tích dữ liệu đáng tin cậy và chính xác. Hãy thực hành dùngna.rmtrong các dự án R và khám phá các kỹ thuật nâng cao để xử lý toàn diện dữ liệu thiếu.Để học thêm, hãy khám phá các tài nguyên sau: