2016-04-23 148 views
2

我有一個數據,從2007年7月1日至10月5日築巢,2014年R:由`ifelse()`

我試圖創建一個名爲數據幀的month_index列命名dat將採取增加年份和月份的整數值會增加。

我寫了下面的R代碼,但看起來並不簡單。

dat$month_index <- with(dat, 
          ifelse(Year == 2007 & Month == 7, 7, 
           ifelse(Year == 2007 & Month == 8, 8, 
             ifelse(Year == 2007 & Month == 9, 9, 
               ifelse (Year == 2007 & Month == 10, 10, 
                 ifelse(Year == 2007 & Month == 11, 11, 
                   ifelse(Year == 2007 & Month == 12, 12, 
                    ifelse(Year == 2008 & Month == 1, 13, 
                      ifelse(Year == 2008 & Month == 2, 14, 
                        ifelse(Year == 2008 & Month == 3, 15, 
                          ifelse(Year == 2008 & Month == 4, 16, 17)))))))) 

如何在幾行內執行代碼?

+1

像'$ DAT = month_index月+ 12 *(年== 2008)' – Frank

+0

@Frank但我必須年從2007年至2014年 –

+2

'月+ 12 *(年 - 2007)'? – Frank

回答

6

避免嵌套ifelse的最佳情況是一種代數解決方案。幸運的是,在這裏工作:

dat$month_index <- with(dat, Month + 12 * (Year - 2007))