У меня возникли трудности с пониманием того, почему мой код для создания фиктивной переменной не работает. Мой data
содержит некоторые NA
значения и имеет следующий вид:Перекодирование переменной в R с отсутствующими значениями
Year Month Var1 Var2
2006 9 278 345
2006 10 251 857
2006 11 254 678
. . . .
. . . .
2015 12 230 641
2016 1 647 268
2016 2 NA 785
2016 3 NA 419
. . . .
. . . .
2016 6 NA 369
Я пытаюсь создать сезонную добавку фиктивную переменную, которая будет равно один за декабрь, начиная с 2014 года и продолжается. Я не понимаю, почему следующий код не работает.
SAout <- ifelse(data$Year<= 2014 & data$Month == 12, 1, 0)
В любое время после января 2016 года SAout
принимает значение NA
, которое не имеет никакого смысла для меня, поскольку data$Year
еще больше 2014
.
SAout
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[41] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[81] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 NA NA NA NA NA NA
EDIT
Я могу создать переменную я хочу со следующим
data$SAout <- ifelse(data$Year >= 2014 & data$Month == 12, 1, 0)
data$SAout[is.na(data$SAout)]<-0
Однако я не понимаю, почему вторая строка кода должна быть необходимой.
Ваше логическое заявление не отражает то, что вы говорите, что хотите. Вы хотите что-то вроде 'ifelse (data $ Year> = 2014 & data $ Month == 12, 1, 0)'. – ytk
Это точный код, который я написал выше. Не так ли? –
У меня была опечатка, извините. Но это тот же код, который я использовал, который дает NA –