У меня есть список ответов на вопрос, и мне нужно создать новую переменную на основе этих ответов, разделив их на две категории. Это делается на основе того, в каком из двух списков отображаются ответы: один содержит все ответы, которые должны быть перекодированы в одну категорию (т. Е. Новая переменная имеет значение 0), а другой содержит все ответы, которые необходимо перекодировать в новую переменную. как 1.
Я пытался заставить это работать, используя цикл for, который циклически перебирает каждую строку, проверяет переменную ответа и присваивает новое значение новой переменной на основе списка, в котором находится ответ, но когда я его запускаю это присваивает каждой строке значение 1 для новой переменной независимо от старой переменной.
Воспроизводимый пример:
df <- data.frame(state = state.name)
# create the reference lists
AtoM <- df$state[1:26]
NtoZ <- df$state[27:50]
for (i in seq_along(df$state)) {
if (df$state[i] %in% AtoM) {
df$state.bin <- 0
} else if (df$state[i] %in% NtoZ) {
df$state.bin <- 1
} else {
df$state.bin <- NA
}
}
View(df) # when the result is viewed, the new state.bin variable has a value of 1 for every row
Должно быть, что первым 26 состояниям присвоено значение 0 для новой переменной, но все они присвоены 1. Но когда я проверяю df$state[1] %in% AtoM
, он возвращает TRUE
.
Что я делаю не так?