[R-es] Distribuir intervalo de días entre meses
Isidro Hidalgo Arellano
ihidalgo en jccm.es
Vie Abr 7 13:02:46 CEST 2017
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