Có rất nhiều bài viết về việc thay thế các giá trị NA. Tôi biết rằng người ta có thể thay thế NAs trong bảng / khung sau bằng những thứ sau:
x[is.na(x)]<-0
Nhưng, điều gì sẽ xảy ra nếu tôi muốn giới hạn nó ở một số cột nhất định? Hãy để tôi chỉ cho bạn một ví dụ.
Đầu tiên, hãy bắt đầu với một tập dữ liệu.
set.seed(1234)
x <- data.frame(a=sample(c(1,2,NA), 10, replace=T),
b=sample(c(1,2,NA), 10, replace=T),
c=sample(c(1:5,NA), 10, replace=T))
Cái nào mang lại:
a b c
1 1 NA 2
2 2 2 2
3 2 1 1
4 2 NA 1
5 NA 1 2
6 2 NA 5
7 1 1 4
8 1 1 NA
9 2 1 5
10 2 1 1
Ok, vì vậy tôi chỉ muốn giới hạn sự thay thế cho cột 'a' và 'b'. Cố gắng của tôi là:
x[is.na(x), 1:2]<-0
và:
x[is.na(x[1:2])]<-0
Cái nào không hoạt động.
Nỗ lực data.table của tôi, trong đó y<-data.table(x)
, rõ ràng là không bao giờ hoạt động:
y[is.na(y[,list(a,b)]), ]
Tôi muốn chuyển các cột bên trong đối số is.na nhưng điều đó rõ ràng sẽ không hoạt động.
Tôi muốn thực hiện việc này trong data.frame và data.table. Mục tiêu cuối cùng của tôi là mã hóa lại 1: 2 thành 0: 1 trong 'a' và 'b' trong khi giữ nguyên 'c' vì nó không phải là một biến logic. Tôi có một loạt các cột nên tôi không muốn làm từng cột một. Và, tôi chỉ muốn biết cách làm điều này.
Bạn có đề nghị nào không?