Я бы преобразовал data.frame в матрицу (чтобы иметь доступ к значениям в виде вектора), нашел бы 15% значений и присвоил бы им значение NA.Я позволю вам отработать хранение замененных позиций в качестве упражнения.:)
del <- data.frame(w = runif(25), x = runif(25), y = runif(25), z = runif(25))
del <- as.matrix(del)
get.sample.index <- sample.int(n = length(del), size = 0.15 * length(del))
extract.del.vals <- del[get.sample.index] # these are the values that will be NA
del[get.sample.index] <- NA # assign those values NA
del <- as.data.frame(del)
Поскольку у нас уже есть data.frame с NA, давайте выберем только значения, которые не являются NA.Вам нужно будет решить, какие 15% вы хотите отобрать, включая NA или исключая.
# addendum
del <- as.matrix(del)
which.are.na <- which(is.na(del) == TRUE)
sample.index <- 1:length(del)
sample.index <- sample.index[-which.are.na] #exclude those that are NA
get.sample.index2 <- sample(x = sample.index, size = 0.15 * length(sample.index))
del[get.sample.index2] <- NA
del <- as.data.frame(del)