2017-10-24 6 views
0

Haben Sie eine Faktor Spalte als April-2017February-2017 usw. Möchten Sie es in Monat und Jahr umwandeln, um die Spalte nach dem Monat und Jahr zu bestellen, so dass es ab Januar beginnt. Versuchte folgende:Faktor zur Monat-Jahr-Umwandlung in R

Combi$Month <- as.yearmon(levels(Combined$Month))[Combined$Month] -> Yields 'NA' 
Combined$Month <- as.Date(Combined$Month,'%B-%Y') -> Yields 'NA' 
+0

Bitte prüfe [MCVE]. –

Antwort

1

Die "yearmon" Klasse kann Jahr-Monat und Sorten wie erwartet darstellen:

library(zoo) 
x <- factor(c('April-2017', 'February-2017')) # test data 

ym <- as.yearmon(x, "%B-%Y") 
sort(ym) 
## [1] "Feb 2017" "Apr 2017" 

Aus diesem Grund Sie nicht wirklich brauchen, um es zu "Date" Klasse zu konvertieren, noch brauchen Sie die Jahr und Monat getrennt, aber wenn aus irgendeinem Grund in der Frage nicht angegeben, benötigen Sie noch separate Werte dann as.integer(ym) und cycle(ym) Geben Sie die Jahre als 4-stellige Zahlen und die Monate als Zahlen zwischen 1 und 12. as.Date(ym) gibt "Date" Klassenwerte.

1

Ein R Basis Weg:

# Some sample data 
df <- data.frame(period=sample(c("April-2017","February-2017"),10, replace = TRUE)) 

nicep <- function(x) { 
    months <- c('January','February','March','April','May','June','July','August','September','October','November','December') 
    l <- strsplit(x, '-') 
    return(sprintf("%s-%02d",l[[1]][2], which(months == l[[1]][1]))) 
} 

# change levels for a nice name 
levels(df$period) <- unlist(lapply(as.character(levels(df$period)), FUN=nicep))