Skip to content

[R-es] Conversión de meses en ts(x)

2 messages · Mauricio Monsalvo, Carlos Ortega

#
Hola.
Tengo una problema con una transformación que hace ts que no logro entender
si debe preocuparme o no... porque no sé que hace. Tengo un objeto
"data.table" "data.frame"
Año MesNro Mes    Valores Unidades   Aportes CantLaboratorios CantSeg
CantProductos
 1: 2014      1 Ene  357424644   612537  21407745               76       9
          404
 2: 2014      2 Feb  318919837   495443  20917489               78       8
          398
 3: 2014      3 Mar  339963350   584218  22119442               77       8
          407
 4: 2014      4 Abr  350679101   606382  23775092               76       8
          411
 5: 2014      5 May  488830529   814274  48437929               77      10
          443
Mes es un factor. MesNro es el resultado de usar ifelse tal que "Ene" = 1,
"Feb" = 2, ..., "Dic" = 3, como puede verse:
Classes ?data.table? and 'data.frame': 30 obs. of  10 variables:
 $ Año             : int  2014 2014 2014 2014 2014 2014 2014 2014 2014 2014
...
 $ MesNro          : num  1 2 3 4 5 6 7 8 9 10 ...
 $ Mes             : Factor w/ 12 levels "Abr","Ago","Dic",..: 4 5 8 1 9 7
6 2 12 11 ...
Pero cuando creo una serie temporal:
Año MesNro Mes    Valores Unidades   Aportes CantLaboratorios
CantSeg CantProductos
Jan 2014 2014      1   4  357424644   612537  21407745               76
  9           404
Feb 2014 2014      2   5  318919837   495443  20917489               78
  8           398
Mar 2014 2014      3   8  339963350   584218  22119442               77
  8           407
Apr 2014 2014      4   1  350679101   606382  23775092               76
  8           411
May 2014 2014      5   9  488830529   814274  48437929               77
 10           443
Time-Series [1:30, 1:10] from 2014 to 2016: 2014 2014 2014 2014 2014 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:10] "Año" "MesNro" "Mes" "Valores" ...
[1] "mts"    "ts"     "matrix"
?La variable Mes ha sido convertida... a algo que parece una serie de
meses, pero que arranca en 4 y que no coincide con los meses en formato
int... Creo que simplemente debería obviarla, pero estoy intentando
aprender series de tiempo y me parece que hay algo de la lógica del objeto
ts que me voy a perder si no pregunto qué está sucediendo o qué estoy
haciendo mal.
Si pudiera entender qué sucede, tal vez podría utilizar directamente ese
factor Mes para crear la serie temporal.
Miré las referencias en https://cran.r-project.org/web/views/TimeSeries.html
pero resuelvo mi duda.
?Muchas gracias.?
#
Hola,

Mira este ejemplo:

http://stackoverflow.com/questions/11422493/using-r-how-do-i-create-a-time-series-object-with-dates

Tienes que convertir alguna de tus columnas a un objeto "as.Date()".
Lo que puedes hacer es algo así:

#-----------------------
library(lubridate)
datos.ag$anioMesDia <- ymd(paste(datos.ag$Año, datos.ag$MesNro, rep(1, nrow(
datos.ag), sep = "-"))
#-----------------------

De esta forma has creado una nueva columna con el año, mes y como no tienes
el día y hace falta para convertir a fecha, ponemos el primer día del mes
de forma artificial. Con la función "ymd()" lo conviertes a una variable de
clase "Date" que ya puedes convertir a clase "ts" porque dentro del
conjunto existe una variable fecha.

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 1 de agosto de 2016, 20:20, Mauricio Monsalvo <m.monsalvo en gmail.com>
escribió: