Jest wiele postów dotyczących zastępowania wartości NA. Zdaję sobie sprawę, że w poniższej tabeli / ramce można zastąpić NA:
x[is.na(x)]<-0
Ale co, jeśli chcę ograniczyć to tylko do niektórych kolumn? Pokażę ci przykład.
Najpierw zacznijmy od zbioru danych.
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))
Co daje:
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, więc chcę ograniczyć zamianę tylko do kolumn „a” i „b”. Moja próba była:
x[is.na(x), 1:2]<-0
i:
x[is.na(x[1:2])]<-0
Co nie działa.
Moja próba z danymi.table, gdzie y<-data.table(x)
oczywiście nigdy nie zadziałała:
y[is.na(y[,list(a,b)]), ]
Chcę przekazać kolumny wewnątrz argumentu is.na, ale to oczywiście nie zadziała.
Chciałbym to zrobić w data.frame i data.table. Moim końcowym celem jest przekodowanie 1: 2 do 0: 1 w „a” i „b”, zachowując „c” taką, jaka jest, ponieważ nie jest to zmienna logiczna. Mam kilka kolumn, więc nie chcę tego robić po kolei. Chciałbym tylko wiedzieć, jak to zrobić.
Masz jakieś sugestie?