У меня есть фрейм данных (df) с тремя числовыми переменными (New, Middle, Old).Мне нужно рассчитать разницу между новым и средним (Diff1) и между новым и старым (Diff2).Если средний балл равен NA, оба балла различия должны быть NA.Оценка различий будет помещена в новую переменную
Разница 1 проста.DIFF1 <- Новый - Средний Всегда дает правильный ответ. </p>
Разница 2 работает правильно, когда (1) присутствует средний балл, или средний балл равен NA, а новый или самый старый балл также равен NA.
Когда средний балл равен NA, и присутствуют самые старые и самые новые баллы, разница 2 всегда числовая.Я не могу получить разницу 2, чтобы быть NA.
Я перепробовал все варианты именования переменных (например, df $ New) и скобок, о которых я могу думать, но безуспешно.Я также попытался использовать == и = вместо <-.Я также проверил (используя Rcmdr), что переменные, которые я считаю NA, на самом деле являются NA. </p>
IN DATA
Old Middle New
2483 NA 585
CODE
Ifelse (is.na(df[,"Middle"]),
(df[,"Diff2"] <- NA ),
(df[,"Diff2"] <- with(df,New - Old)))
ACTUAL OUT DATA
Diff1(New – Middle) Diff2(New – Old)
NA -1898
желаемые выходные данные
Diff1(New – Middle) Diff2(New – Old)
NA NA