semana palabras palabra meses fecha español como año agosto abreviaturas abreviatura abrevia r date

palabras - Convertir un mes numérico a una abreviatura de mes



abreviaturas de palabras (4)

Tengo un csv con una columna llamada mes como un vector numérico.

¿Hay alguna forma de convertir esto a un nombre de mes abreviado del mes?


Si las abreviaturas en el idioma inglés son aceptables, R tiene un vector month.abb de los nombres de los meses abreviados. Simplemente use la fecha numérica para indexar ese vector de nombres de meses abreviados. Por ejemplo, usando datos ficticios:

set.seed(1) df <- data.frame(A = runif(10), Month = sample(12, 10, replace = TRUE))

Aquí hay varias opciones para indexar month.abb por Month :

> with(df, month.abb[Month]) [1] "Mar" "Mar" "Sep" "May" "Oct" "Jun" "Sep" "Dec" "May" "Oct" > df <- transform(df, MonthAbb = month.abb[Month]) > df A Month MonthAbb 1 0.26550866 3 Mar 2 0.37212390 3 Mar 3 0.57285336 9 Sep 4 0.90820779 5 May 5 0.20168193 10 Oct 6 0.89838968 6 Jun 7 0.94467527 9 Sep 8 0.66079779 12 Dec 9 0.62911404 5 May 10 0.06178627 10 Oct


Si necesita abreviatura de mes no estándar, cree su propio vector de búsqueda de mes:

#dummy data df <- data.frame(month = c(1,3,5)) #months vector assuming 1st month is Jan. mymonths <- c("Jan","Feb","Mar", "Apr","May","Jun", "Jul","Aug","Sep", "Oct","Nov","Dec") #add abbreviated month name df$MonthAbb <- mymonths[ df$month ] #result df # month MonthAbb # 1 1 Jan # 2 3 Mar # 3 5 May


Use lubridate, construya un vector a partir de un mes conocido:

Prueba: para estos números de mes, asuma que Jan = 1:

> m = c(1,2,6,7,9,10,11,12,0,99,NA)

hacer:

> require(lubridate) > as.character(month(ymd(010101) + months(m-1),label=TRUE,abbr=TRUE)) [1] "Jan" "Feb" "Jun" "Jul" "Sep" "Oct" "Nov" "Dec" "Dec" "Mar" NA

donde el (m-1) es porque estamos comenzando a partir de una fecha en enero.

Para ver cómo eso se compara:

> cbind(m,as.character(month(ymd(010101) + months(m-1),label=TRUE,abbr=TRUE))) m [1,] "1" "Jan" [2,] "2" "Feb" [3,] "6" "Jun" [4,] "7" "Jul" [5,] "9" "Sep" [6,] "10" "Oct" [7,] "11" "Nov" [8,] "12" "Dec" [9,] "0" "Dec" [10,] "99" "Mar" [11,] NA NA

Tenga en cuenta que interpreta los números de los meses como mod-12, por lo que 99 se asigna a 3 (99 = 3 + (8 * 12)) y NA devuelve NA. Algunas de las respuestas ya publicadas no harán esto. -1 es noviembre ya que 0 es diciembre


Echa un vistazo a la constante de month.abb . Por ejemplo, suponga que tiene un vector de enteros que consiste en el número del mes, luego puede usarlo para obtener las tres letras abreviadas del nombre del mes haciendo:

> month <- c(12,3,6,2,3,7) > month.abb[month] [1] "Dec" "Mar" "Jun" "Feb" "Mar" "Jul"