У меня есть этот набор данных с 6 переменными, содержащими положительные, отрицательные или NA. Необходимо создать новый столбец на основе значений этих переменных следующим образом:
P
, если ЛЮБАЯ из 6 переменных содержит положительный результат.
N
если НИ ОДНА из 6 переменных не содержит положительного результата.
NA
, если ВСЕ из 6 переменных имеют NA
.
MWE
var1 <- c('var1P', 'var1N', 'var1P', 'var1P', NA, 'var1N')
var2 <- c('var2N', 'var2N', 'var2N', 'var2P', NA, 'var2N')
var3 <- c('var3N', 'var3N', 'var3N', 'var3P', NA, 'var3N')
var4 <- c('var4P', 'var4N', 'var4P', 'var4P', NA, 'var4N')
var5 <- c(NA, 'var5N', 'var5N', 'var5P', NA, 'var5N')
var6 <- c(NA, NA, 'var6N', 'var6P', NA, 'var6N')
No <- seq(1:6)
df <- data.frame(No, var1, var2, var3, var4, var5, var6)
Код
dfnew <- df %>%
dplyr::mutate(varif = ifelse(var1 == 'var1P' | var2 == 'var2P' | var3 == 'var3P' | var4 == 'var4P' | var5 == 'var5P' | var6 == 'var6P', 'P', 'N'))
Вывод
No var1 var2 var3 var4 var5 var6 varif
1 var1P var2N var3N var4P <NA> <NA> P
2 var1N var2N var3N var4N var5N <NA> <NA>
3 var1P var2N var3N var4P var5N var6N P
4 var1P var2P var3P var4P var5P var6P P
5 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
6 var1N var2N var3N var4N var5N var6N N
Вопрос
varif
для номера 2 следует читать N
вместо NA
, чтобы отличить его от номера 5, где все значения были NA
.
Failed Trial
impMe <- function (var1, var2, var3, var4, var5, var6) {
x <-ifelse(is.na(var1) & is.na(var2) & is.na(var3) & is.na(var4) & is.na(var5) & is.na(var6), NA,
ifelse (var1 == 'var1P' | var2 == 'var2P' | var3 == 'var3P' | var4 == 'var4P' | var5 == 'var5P' | var6 == 'var6P','P','N'))
return(x)
}
dfnew <- df %>%
dplyr::mutate(varif = impMe(var1, var2, var3, var4, var5, var6))
No var1 var2 var3 var4 var5 var6 varif
1 var1P var2N var3N var4P <NA> <NA> P
2 var1N var2N var3N var4N var5N <NA> <NA>
3 var1P var2N var3N var4P var5N var6N P
4 var1P var2P var3P var4P var5P var6P P
5 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
6 var1N var2N var3N var4N var5N var6N N