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]]
_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es