Выпадение в R: случайным образом удалить элементы и заменить их на NA - PullRequest
0 голосов
/ 10 октября 2018

Я хочу реализовать отсев, т. Е. Произвольно заменить элементы на NA и вернуть вектор / список обратно со значениями NA.

Требуемый результат состоит в том, чтобы уменьшить перенастройку, чтобы для этого могли быть более удобные функции удобства.

Подход 1

b<-rnorm(100); b[match(sample(b,10),b)] <- NA

, где 10 значений заменены на NA.

Подход 2. как удалить 90% населения?Не работает, получая менее 90%:

b<-rnorm(99); b[match(sample(b,length(b)*0.9),b)] <- NA

, что на самом деле не работает из-за возможных совпадений, т.е. выбора одного и того же элемента.

Есть ли встроенная или удобная функция для отсева?

1 Ответ

0 голосов
/ 10 октября 2018

Используйте функцию is.na<-, чтобы присвоить NA значения для вектора.

set.seed(1)
b <- rnorm(100)
b[match(sample(b, 10), b)] <- NA

set.seed(1)
b2 <- rnorm(100)
is.na(b2) <- sample(length(b2), 10)

identical(b, b2)
#[1] TRUE

Для того, чтобы осуществить удаление 90% населения с NA, sample на основедлина вектора для обработки.

set.seed(1)
b <- rnorm(100)
is.na(b) <- sample(length(b), 0.9*length(b))
mean(is.na(b))
#[1] 0.9
...