Є багато публікацій про заміну значень NA. Мені відомо, що можна замінити НС у наступній таблиці / фреймі такими:
x[is.na(x)]<-0
Але що, якщо я хочу обмежити його лише певними стовпцями? Давайте покажу вам приклад.
Спочатку почнемо з набору даних.
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))
Що дає:
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
Гаразд, тому я хочу обмежити заміну лише стовпцями "а" та "б". Моєю спробою було:
x[is.na(x), 1:2]<-0
і:
x[is.na(x[1:2])]<-0
Що не працює.
Моя спроба data.table, де y<-data.table(x)
, очевидно, ніколи не працювала:
y[is.na(y[,list(a,b)]), ]
Я хочу передати стовпці всередині аргументу is.na, але це, очевидно, не буде працювати.
Я хотів би зробити це у файлах data.frame та data.table. Моя кінцева мета - перекодувати 1: 2 до 0: 1 в "a" та "b", зберігаючи "c" таким, яким воно є, оскільки це не є логічною змінною. У мене є купа стовпців, тому я не хочу робити це по одному. І я просто хотів би знати, як це зробити.
Чи є у вас пропозиції?