Если значения двух столбцов равны, измените значение результирующего столбца на Na и, если не сохранить исходное значение результирующей колонны - с использованием R
-
04-10-2019 - |
Вопрос
Этот вопрос похож на предыдущий.
Я предоставляю этот пример данных, чтобы получить мой вопрос.
id=c(1,2,3,4,5,6,7,8,9,10)
var1=c(0,1,2,0,6,9,0,0,3,0)
var2=c(0,0,2,3,0,0,0,5,0,0)
var3=c(0,1,4,3,6,9,0,5,3,0)
data=data.frame(id,var1,var2, var3)
Что мне нужно: если значения var1==var2
, Затем сделать var3==NA
Но если они не содержат ценность var3
. Отказ Будет рад, что это сделано, используя ifelse
Функция в R, но другие варианты приветствуются.
Я надеюсь, что вопрос достаточно ясен.
С уважением, Базон
Решение
Однозначное осознание с Ifelse - это, может ли состояние Na. В вашем случае с использованием примерного кода Давида, если VAR1 или VAR2 является Na, то VAR3 будет установлен на NA.
Я либо устанавливаю NAS F в состоянии, либо сделать что-то вроде:
var3 <- replace(var3, which(var1 == var2), NA)
Сравнивать:
data$var1[1] = NA
with(data, ifelse(var1 == var2, NA, var3))
# [1] NA 1 NA 3 6 9 NA 5 3 NA
with(data, replace(var3, which(var1 == var2), NA))
# [1] 0 1 NA 3 6 9 NA 5 3 NA
Другие советы
Это должно работать до тех пор, пока нет NA в двух векторах:
var3 <- ifelse(var1 == var2, NA, var3)
Не связан с StackOverflow