我很难理解为什么我创建虚拟变量的代码不起作用。我的data
包含一些NA
值,其格式如下:
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年开始等于12月继续上去。我无法理解为什么以下代码无效。
SAout <- ifelse(data$Year<= 2014 & data$Month == 12, 1, 0)
2016年1月之后的任何时间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
修改
我可以使用以下
创建我想要的变量data$SAout <- ifelse(data$Year >= 2014 & data$Month == 12, 1, 0)
data$SAout[is.na(data$SAout)]<-0
但是我不明白为什么第二行代码是必要的。
答案 0 :(得分:0)
这是因为你试图用2个条件创建一个虚拟变量。
在你的代码中,它表示年份和月份是否等于12。
而是尝试以下代码
data$SAout<-ifelse(data$year >=2014 & data$month==12,1,0)