2013-05-26 42 views
8

Tôi đang sử dụng R để tạo các ví dụ về cách xử lý dữ liệu bị thiếu cho lớp thống kê mà tôi đang dạy. Một phương thức yêu cầu tạo ra một "biến nhị phân giá trị bị thiếu", với 0 cho các trường hợp chứa các giá trị bị thiếu, và 1 không có giá trị bị thiếu. Ví dụR-tạo "biến giá trị thiếu"

n X Y Z 
1 4 300 2 
2 8 400 4 
3 10 500 7 
4 18 NA 10 
5 20 50 NA 
6 NA 1000 5 

Tôi muốn tạo ra một M biến, chẳng hạn rằng

n m 
1 1 
2 1 
3 1 
4 0 
5 0 
6 0 

Có vẻ như điều này sẽ được đơn giản, cho khả năng R để xử lý các giá trị bị mất tích. Gần nhất tôi đã tìm thấy là m <-ifelse(is.na(missguns),0,1), nhưng tất cả điều này làm là tạo ra một ma trận dữ liệu toàn bộ mới với 0 hoặc 1 cho thấy thiếu. Tuy nhiên, tôi chỉ muốn một biến cho biết một hàng có chứa giá trị bị thiếu hay không.

Trả lời

9

complete.cases thực hiện chính xác những gì bạn muốn.

complete.cases(x) 
## [1] TRUE TRUE TRUE FALSE FALSE FALSE 

Bạn có thể ép buộc để số hoặc số nguyên:

as.integer(complete.cases(x)) 
## [1] 1 1 1 0 0 0 
+0

Cảm ơn-đó đã làm các trick! Cũng giống như một bản cập nhật, tôi đã thực hiện thử nghiệm t của Rubin. đây là mã tôi đã tạo. Tập dữ liệu là "missguns" (bộ dữ liệu "súng" nhưng tôi đã bao gồm các giá trị bị thiếu) và một trong các biến là "đô thị". thiếu <-as.integer (complete.cases (missguns)) thực hành <-bind (missguns, missing) thiếu <-practice [practice $ missing == 0,] complete <-practice [practice $ missing == 1 ,] t.test (thiếu $ đô thị, đô thị hoàn chỉnh $) –

Các vấn đề liên quan