2016-04-23 6 views
2

У меня есть данные, начиная с 1 июля 2007 по 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

Что-то вроде 'Дат $ month_index = Месяц + 12 * (год == 2008)' – Frank

+0

@Frank но у меня есть год с 2007 по 2014 год –

+2

'Месяц + 12 * (год - 2007) '? – Frank

ответ

6

Наилучший вариант для избежания вложенных ifelse является алгебраическим решением. К счастью, здесь работает:

dat$month_index <- with(dat, Month + 12 * (Year - 2007)) 
Смежные вопросы