Buenas noches a todos las personas del foro,

 

Me dirijo a vosotros con la siguiente cuestión:
 
¿Cómo es posible obtener, para cada individuo (identificado con la variable ID) de un data frame, la CANTIDAD ACUMULADA hasta una determinada fecha (día, mes y año), que es diferente para cada individuo y que se denota por la variable ENTRADA?
 
Ejemplo:
 
require(data.table)
datos2 <- data.table(data.frame(ID = c(rep(100,3),rep(120,2)),
          FECHA = as.Date(c("02/08/2005", "19/10/2005", "09/12/2007", 
          "11/05/2006", "20/12/2009"),"%d/%m/%Y"),
          ENTRADA = c(as.Date(rep("30/07/2007",3),"%d/%m/%Y"),
                        as.Date(rep("25/02/2008",2),"%d/%m/%Y")),
          CANTIDAD = c(25, 15, 12, 35, 2)))
 
    ID      FECHA    ENTRADA CANTIDAD
1: 100 2005-08-02 2007-07-30       25
2: 100 2005-10-19 2007-07-30       15
3: 100 2007-12-09 2007-07-30       12
4: 120 2006-05-11 2008-02-25       35
5: 120 2009-12-20 2008-02-25        2
 
Desearía obtener, dentro de cada ID, la cantidad acumulada hasta un instante igual a su fecha ENTRADA:
    ID    ENTRADA CANT_ACUM
1: 100 2007-07-30        40
2: 120 2008-02-25        35
 
Sin embrago, ejecuto el siguiente código y no compila:
 
require(reshape2)
res=melt(dcast.data.table(datos2,ID~ENTRADA,sum,value.var="CANTIDAD"),
    id.var="ID")
setkey(res,ID,variable)
result <- subset(res[,CANT_ACUM:=cumsum(value<=ENTRADA),by=ID],CANT_ACUM>0)
result <- as.data.frame.matrix(result) # Convierto en data frame
result <- result[,-which(colnames(result)=='value')]
 
Muchas gracias por cualquier ayuda.
 		 	   		  
	[[alternative HTML version deleted]]

