[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