2016-04-23 9 views
2

ich ein Datum ab dem 1. Juli habe 2007 bis zum 5. Oktober 2014R: Verschachtelung von `ifelse()`

Ich versuche, eine Spalte zu erstellen month_index des Datenrahmens dat Namen benannt, die zunehmenden nehmen ganzzahlige Werte als Jahr und Monat erhöht.

Ich schrieb den folgenden R-Code, aber es scheint überhaupt nicht sparsam.

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)))))))) 

Wie kann ich den Code in ein paar Zeilen ausführen?

+1

So etwas wie 'dat $ month_index = Monat + 12 * (Jahr == 2008)' – Frank

+0

@Frank aber ich habe Jahr von 2007 bis 2014 –

+2

'Monat + 12 * (Jahr - 2007) '? – Frank

Antwort

6

Das Best-Case-Szenario zur Vermeidung verschachtelter ifelse ist eine algebraische Lösung. Zum Glück, das funktioniert hier:

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