Foro de debate

Necesito unas Variables

Necesito unas Variables

de Pablo Guzzi -
Número de respuestas: 1
Hola.
Estoy tratando de hacer unas variables pero no me han salido hasta el momento.

Pero se me esta complicando bastante. Necesito variables que cuenten o sumen registro a registro. A continuacion expongo un breve ejemplo

Tarjeta Fecha Hora Importe Trx del dia Importe del dia
XXXXXXXXXXXXXX 01/01/2012 05:39:10 $ 10 1 $ 10
XXXXXXXXXXXXXX 01/01/2012 05:39:17 $ 15 2 $ 25
YYYYYYYYYYYYYY 01/01/2012 07:44:10 $ 50 1 $ 50
XXXXXXXXXXXXXX 02/01/2012 08:39:10 $ 240 1 $ 240
ZZZZZZZZZZZZZZ 02/01/2012 09:39:10 $ 40 1 $ 40
ZZZZZZZZZZZZZZ 02/01/2012 09:39:13 $ 110 2 $ 150
XXXXXXXXXXXXXX 02/01/2012 11:39:10 $ 80 2 $ 320
XXXXXXXXXXXXXX 02/01/2012 12:39:10 $ 100 3 $ 420
YYYYYYYYYYYY 02/01/2012 13:39:10 $ 15 1 $ 15
XXXXXXXXXXXXXX 03/01/2012 14:39:10 $ 200 1 $ 200
ZZZZZZZZZZZZZZ 03/01/2012 15:39:10 $ 300 1 $ 300
ZZZZZZZZZZZZZZ 03/01/2012 16:39:10 $ 150 2 $ 450

Me di cuenta que no sale bien el ejemplo en el post...
dejo un link con el ejemplo

http://imgur.com/xH46g

En este ejemplo se ve como la variable transacciones del dia va contando para una tarjeta las transaccioneshasta el final del dia, luego arranca devuelta. Lo mismo con la varaibale importe del dia que suma el importe de las transacciones de una tarjeta en lo que va en el dia y luego arranca devuelta tras el cambio de dia.

Estas dos variables las pude hacer perfectamente, con dos sentencias distintas.

Tarjeta,Fecha,Hora,Importe
XXXXXXXXXXXXXX,01/01/2012,05:39:10,10
XXXXXXXXXXXXXX,01/01/2012,05:39:17,15
YYYYYYYYYYYYYY,01/01/2012,07:44:10,50
XXXXXXXXXXXXXX,02/01/2012,08:39:10,240
ZZZZZZZZZZZZZZ,02/01/2012,09:39:10,40
ZZZZZZZZZZZZZZ,02/01/2012,09:39:13,110
XXXXXXXXXXXXXX,02/01/2012,11:39:10,80
XXXXXXXXXXXXXX,02/01/2012,12:39:10,100
YYYYYYYYYYYYYY,02/01/2012,13:39:10,15
XXXXXXXXXXXXXX,03/01/2012,14:39:10,200
ZZZZZZZZZZZZZZ,03/01/2012,15:39:10,300
ZZZZZZZZZZZZZZ,03/01/2012,16:39:10,150

...el siguiente script hace lo requerido

datos <- read.csv("C:/datos.csv")
datos ## estado inicial del data frame
n <- nrow(datos)
datos <- cbind(datos, TrxDia=rep(0,n), ImpDia=rep(0,n))
res.i <- by(datos$Importe, datos[,1:2], cumsum)
tarjetas <- levels(datos$Tarjeta)
fechas <- levels(datos$Fecha)
n.tar <- length(tarjetas)
n.fch <- length(fechas)
contador.trx <- matrix(rep(0,n.tar*n.fch),n.tar,n.fch)
for (i in 1:n) {
t <- which(tarjetas==datos$Tarjeta[i])
f <- which(fechas==datos$Fecha[i])
contador.trx[t,f] <- contador.trx[t,f]+1
datos$TrxDia[i] <- contador.trx[t,f]
datos$ImpDia[i] <- res.i[t,f][[1]][contador.trx[t,f]]
}
datos ## estado final del data frame

o mas facil mediante un paquete,
plyr
ddply(datos, 1:2, transform, cumsum(Importe))

Bien, mi problema ahora es que quiero crear estas mismas variables pero hora a hora. Es decir, que cuente las trx de la ultima hora, por decir un valor, podrian ser 15 min.

Alguien me podria ayudar


En respuesta a Pablo Guzzi

Re: Necesito unas Variables

de Manuel Muñoz Márquez -
Hola:

Si ya sabes hacerlo con el día, yo crearía una variable auxiliar añadiendo al día la franja de 15 minutos y usaría dicha variable para agrupar.

La franja la construiría usando una función tal que dada una hora me devolviese la franja del día a la que pertenece, un segundo parámetro opcional de esta función podría ser la duración de la franja.

Saludos.