varias superponer studio modificar lineas graficos graficas ejes r datetime

superponer - Convertir meses mmm a numérico



superponer graficas en r (4)

Me han dado un csv con una columna llamada mes como una variable char con las tres primeras letras del mes. P.ej:

"Jan", "Feb","Mar",..."Dec"

¿Hay alguna forma de convertir esto a una representación numérica del mes, del 1 al 12, o incluso de un tipo que esté en un formato de fecha?


Puede usar el vector month.abb para verificar cuando se convierte a un número, por ejemplo:

mm <- c("Jan","Dec","jan","Mar","Apr") sapply(mm,function(x) grep(paste("(?i)",x,sep=""),month.abb)) Jan Dec jan Mar Apr 1 12 1 3 4

El constructo grep se ocupa de las diferencias en el uso de mayúsculas. Si eso no es necesario,

match(mm,month.abb)

Funciona igual de bien.

Si también tiene una columna de día y año, puede usar cualquiera de las funciones de conversión, usando los códigos apropiados (vea también ?strftime )

p.ej

mm <- c("Jan","Dec","jan","Mar","Apr") year <- c(1998,1998,1999,1999,1999) day <- c(4,10,3,16,25) dates <- paste(year,mm,day,sep="-") strptime(dates,format="%Y-%b-%d") [1] "1998-01-04" "1998-12-10" "1999-01-03" "1999-03-16" "1999-04-25"


Solo añadiendo las respuestas existentes y el comentario en la pregunta:

readr::parse_date("20/DEZEMBRO/18","%d/%B/%y",locale=locale("pt"))

Formato de fecha de resultados "2018-12-20" . locale("pt") es para portugués, que se usa en Brasil, puede hacer "es" para español, "fr" para francés, etc.


Un par de opciones usando:

vec <- c("Jan","Dec","Jan","Apr")

son

> Months <- 1:12 > names(Months) <- month.abb > unname(Months[vec]) [1] 1 12 1 4

y / o

> match(vec, month.abb) [1] 1 12 1 4


Use match y el vector predefinido month.abb :

tst <- c("Jan","Mar","Dec") match(tst,month.abb) [1] 1 3 12