Если значения двух столбцов равны, измените значение результирующего столбца на Na и, если не сохранить исходное значение результирующей колонны - с использованием R

StackOverflow https://stackoverflow.com/questions/3783582

  •  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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top