Использование if else на фрейме данных в нескольких столбцах

У меня есть большой набор данных образцов с дескрипторами того, является ли образец жизнеспособным - он выглядит (вроде) так, где «desc» - столбец описания, а «blank» указывает, что образец нежизнеспособен:

     desc        x        y        z
1   blank 4.529976 5.297952 5.581013
2   blank 5.906855 4.557389 4.901660
3  sample 4.322014 4.798248 4.995959
4  sample 3.997565 5.975604 7.160871
5   blank 4.898922 7.666193 5.551385
6   blank 5.667884 5.195825 5.232072
7   blank 5.524773 6.726074 4.767475
8  sample 4.382937 5.926217 5.203737
9  sample 4.976908 3.079191 4.614121
10  blank 4.572954 4.772373 6.077195

Я хочу использовать оператор if else, чтобы установить строки с неиспользуемыми данными в NA. Окончательный набор данных должен выглядеть следующим образом:

     desc        x        y        z
1   blank       NA       NA       NA
2   blank       NA       NA       NA
3  sample 4.322014 4.798248 4.995959
4  sample 3.997565 5.975604 7.160871
5   blank       NA       NA       NA
6   blank       NA       NA       NA
7   blank       NA       NA       NA
8  sample 4.382937 5.926217 5.203737
9  sample 4.976908 3.079191 4.614121
10  blank       NA       NA       NA 

Я пробовал цикл for, но у меня возникают проблемы при получении цикла for для изменения всех столбцов в одном цикле. В моем реальном наборе данных 40 столбцов, поэтому я бы предпочел не обрабатывать его в отдельных циклах! Вот код для изменения одного столбца за раз:

for(i in 1:length(desc)){
    if(dat$desc[i] =="blank"){
    dat$x[i] <- NA
    } 
    else {
    dat$x[i] <- dat$x[i]
    }
}

Я сделал пример данных с помощью этого скрипта:

desc <- c("blank", "blank", "sample", "sample", "blank", "blank", "blank",    "sample", "sample", "blank")
x <-  rnorm(10, mean=5, sd=1)
y <-  rnorm(10, mean=5, sd=1)
z <-  rnorm(10, mean=5, sd=1)

dat <- data.frame(desc,x,y,z)

Извините, если это основной вопрос, я провел все утро, просматривая форумы, и не смог найти решение.

Любая помощь высоко ценится!

Ответы на вопрос(5)

Ваш ответ на вопрос