[R-es] Distribuir intervalo de días entre meses

Isidro Hidalgo Arellano ihidalgo en jccm.es
Vie Abr 7 13:08:51 CEST 2017


Acabo de darme cuenta que tenías casi la solución, no lo había leído,
disculpa.
Lo puedes encapsular así:

diasMes2 = function(limites){
  inicio = as.Date(limites[1], format = "%Y-%m-%d")
  fin = as.Date(limites[2], format = "%Y-%m-%d")
 return(table(format(seq(inicio, fin, by=1), "%m"))) 
}

apply(df, 1, diasMes2)

Un saludo,

Isidro Hidalgo Arellano
Observatorio del Mercado de Trabajo
Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/

-----Mensaje original-----
De: Isidro Hidalgo Arellano [mailto:ihidalgo en jccm.es] 
Enviado el: viernes, 07 de abril de 2017 13:03
Para: 'Rubén Coca' <ruben.coca en gmail.com>; 'Lista R'
<r-help-es en r-project.org>
Asunto: RE: [R-es] Distribuir intervalo de días entre meses

Podrías probar con algo así:

require(lubridate)

diasMes = function(limites){
  inicio = as.Date(limites[1], format = "%Y-%m-%d")
  fin = as.Date(limites[2], format = "%Y-%m-%d")
  secuencia = seq(inicio, fin, "days")
  meses = month(secuencia)
  return(table(meses))
}

apply(df, 1, diasMes)

Un saludo,


Isidro Hidalgo Arellano
Observatorio del Mercado de Trabajo
Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/
	

-----Mensaje original-----
De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de Rubén
Coca Enviado el: viernes, 07 de abril de 2017 12:02
Para: Lista R <r-help-es en r-project.org>
Asunto: [R-es] Distribuir intervalo de días entre meses

Hola,
Partiendo de un data frame con 2 variables de fecha (inicio y fin):

df <- data.frame(inicio = c(as.Date("2016-01-01"),
                                      as.Date("2016-02-14")),
                        fin = c(as.Date("2016-02-01"),
                                  as.Date("2016-02-29")))

Necesitaría crear 12 nuevas columnas adicionales, una para cada mes, que
compute el número de días del intervalo que caen en cada mes. El resultado
deseado sería algo así:

inicio             fin              ene    feb    mar    abr    may    jun
   jul    ago    sep    oct    nov    dic
2016-01-01    2016-02-01  31     1       0        0       0        0      0
     0        0       0       0       0
2016-02-14    2016-02-29  0       15     0        0       0        0      0
     0        0       0       0       0

Buscando he encontrado una aproximación al problema del reparto, pero no es
válida para data frames. La detallo por si sirve de inspiración:
table(format(seq(df$inicio, df$fin, by=1), "%m"))

Muchas gracias.
Rubén

	[[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es