Я пытаюсь условно изменить некоторые элементы при очистке данных опроса.
У меня есть два вопроса, Вопрос X и Вопрос Y. Если они отвечают 1 или 2 на Вопрос X, они продолжают отвечать на Вопрос Y. Если они отвечают 3 или 4 на Вопрос X, они пропускают ВопросY.
Если они отвечают X на 1 или 2, а затем пропускают Y, я хочу записать их 'NULL!'Записи как NA - они просто не ответили на вопрос, когда они должны были.Если они отвечают X на 3 или 4, а затем пропускают Y, я хочу записать их «NULL!»Записи как 0 - они не должны были отвечать на вопрос, поэтому они не сделали.
Вот воспроизводимый набор данных, который я сделал:
set.seed(1)
df <- data.frame(
X = as.factor(sample(c("1.00", "2.00", "3.00", "4.00"), 10, replace = TRUE)),
Y = as.factor(sample(c("1.00", "2.00", "#NULL!"), 10, replace = TRUE))
)
df
Я пытаюсь заменить вышеупомянутое «NULL!»поля с NA или 0 соответственно.Я пытался сделать это с помощью ifelse (), и мне немного не повезло - кажется, он возвращает все, что равно 1,00 или 2,00 как NA и 3,00 или 4,00 как 0. Есть ли лучший способ сделать это?Что я делаю неправильно?
levels(df$Y) <- c(levels(df$Y), 0)
df$Y <- ifelse(df$X == '3.00'| df$X == '4.00', df$Y[df$y == 'NULL!'] <- 0, df$Y[df$Y == '#NULL!'] <- NA)
df
Спасибо за помощь!