Hola, Me llamo Pablo, estudiante avanzado de la Licenciatura en Estadistica, me faltan 3 materias que las doy la semana que viene y termino la carrera. Trabajo en Red Link S.A. en el sector de Prevencion de Fraudes. En Red Link no se tenia ningun software estadistico cuando ingrese (6 meses aprox.) asi que empeze a incursionar en R sabiendo que era libre y me encontre con una fantastica herramienta. Previamente trabaje en el INDEC en el area de Metodologia, me especializaba en el muestreo. Alli aprendi a manejar soft como Stata, SPSS y SAS. Pero R es bastante distinto a estos programas por lo que lucho un poco mas cada vez que me propongo algo. Creo que esta lista de mail va a ser muy productiva. Actualmente me encuentro tratando de tratando de crear unas variables. Expongo un pequeño dataset http://imgur.com/xH46g<http://www.linkedin.com/redirect?url=http%3A%2F%2Fimgur%2Ecom%2FxH46g&urlhash=XxFq&_t=tracking_anet> Las dos variables del final son las que quiero y pude hacer mediante un paquete "plyr". Mediante la sentencia ddply(datos, 1:2, transform, cumsum(Importe)) Pero lo cierto es que estoy tratando ahora de hacer la variable trx_hora, que cuente las transacciones de los ultimos 60 minutos y no he logrado hacerla. Si alguien puede ayudarme bienvenido sea! Abrazo Pablo A. Guzzi guzzipa@gmail.com [[alternative HTML version deleted]]
Estimado Pablo No se si entendí coloca en r: ## something similar in the current locale format(Sys.time(), "%a %b %d %H:%M:%S %Y") # necesitas a esa fecha restarle 60 minutos, y buscar todos los que están en el rango entra ambos valores # o los últimos 60 minutos de movimientos con la tarjeta a partir del último registro ingresado Javier Marcuzzi -----Mensaje original----- From: Pablo Andres Guzzi Sent: Wednesday, November 28, 2012 11:04 AM To: r-help-es en r-project.org Subject: [R-es] Hola, soy Pablo. Hola, Me llamo Pablo, estudiante avanzado de la Licenciatura en Estadistica, me faltan 3 materias que las doy la semana que viene y termino la carrera. Trabajo en Red Link S.A. en el sector de Prevencion de Fraudes. En Red Link no se tenia ningun software estadistico cuando ingrese (6 meses aprox.) asi que empeze a incursionar en R sabiendo que era libre y me encontre con una fantastica herramienta. Previamente trabaje en el INDEC en el area de Metodologia, me especializaba en el muestreo. Alli aprendi a manejar soft como Stata, SPSS y SAS. Pero R es bastante distinto a estos programas por lo que lucho un poco mas cada vez que me propongo algo. Creo que esta lista de mail va a ser muy productiva. Actualmente me encuentro tratando de tratando de crear unas variables. Expongo un pequeño dataset http://imgur.com/xH46g<http://www.linkedin.com/redirect?url=http%3A%2F%2Fimgur%2Ecom%2FxH46g&urlhash=XxFq&_t=tracking_anet> Las dos variables del final son las que quiero y pude hacer mediante un paquete "plyr". Mediante la sentencia ddply(datos, 1:2, transform, cumsum(Importe)) Pero lo cierto es que estoy tratando ahora de hacer la variable trx_hora, que cuente las transacciones de los ultimos 60 minutos y no he logrado hacerla. Si alguien puede ayudarme bienvenido sea! Abrazo Pablo A. Guzzi guzzipa en gmail.com [[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
Pablo, Si lo que quieres es un sub-total rolling de los últimos 60 minutos te recomiendo, si no conoces, los paquetes xts y zoo. En particular empezaría por la función ?rollapply de zoo. Daniel Merino El día 28 de noviembre de 2012 11:04, Pablo Andres Guzzi <guzzipa en gmail.com> escribió:> Hola, > Me llamo Pablo, estudiante avanzado de la Licenciatura en Estadistica, me > faltan 3 materias que las doy la semana que viene y termino la carrera. Trabajo > en Red Link S.A. en el sector de Prevencion de Fraudes. En Red Link no se > tenia ningun software estadistico cuando ingrese (6 meses aprox.) asi que > empeze a incursionar en R sabiendo que era libre y me encontre con una > fantastica herramienta. > > Previamente trabaje en el INDEC en el area de Metodologia, me > especializaba en el muestreo. Alli aprendi a manejar soft como Stata, SPSS > y SAS. Pero R es bastante distinto a estos programas por lo que lucho un > poco mas cada vez que me propongo algo. > > Creo que esta lista de mail va a ser muy productiva. > > Actualmente me encuentro tratando de tratando de crear unas variables. > Expongo un pequeño dataset > > http://imgur.com/xH46g<http://www.linkedin.com/redirect?url=http%3A%2F%2Fimgur%2Ecom%2FxH46g&urlhash=XxFq&_t=tracking_anet> > > Las dos variables del final son las que quiero y pude hacer mediante un > paquete "plyr". Mediante la sentencia > > ddply(datos, 1:2, transform, cumsum(Importe)) > > Pero lo cierto es que estoy tratando ahora de hacer la variable trx_hora, > que cuente las transacciones de los ultimos 60 minutos y no he logrado > hacerla. > > Si alguien puede ayudarme bienvenido sea! > > > > Abrazo > > Pablo A. Guzzi > guzzipa en gmail.com > > [[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 >-- Daniel
Daniel, ya me pongo a investigar el paquete zoo y mas precisamente el comando rollappl. Javier, Necesito los movimientos de los ultimos 60 minutos segun la fecha de la transaccion. Si la transaccion tiene fecha de realizacion 28/11/2012 a las 12:00:00 necesito que la variable en cuestion cuente las trx realizadas desde las 11:00:00 hasta las 12:00:00 del 28/11/2012 Abrazo Pablo A. Guzzi guzzipa@gmail.com El 28 de noviembre de 2012 11:18, Usuario R <r.user.spain@gmail.com>escribió:> Hola Pablo, > > Soy Patricia la administradora de la lista. Bienvenido y muchas gracias > por tu email. > > Quería también hacerte una pregunta, estas buscando trabajo? Yo soy > también licenciada en estadística y vivo en Berlin. Me mandan muchisimas > ofertas de trabajo y te podría pasar algunas, si estas interesado. Todas > las ofertas son para Alemania, sobretodo Berlin. > > Bueno, espero que la lista te ayude con tus dudas, un abrazo. > > Patricia > > > > > > El 28 de noviembre de 2012 15:04, Pablo Andres Guzzi <guzzipa@gmail.com>escribió: > >> Pablo A. Guzzi > > > > > -- > Patricia García González > > >[[alternative HTML version deleted]]
Estimado Pablo
Entonces su problema tiene algo parecido a algo que me paso, en esta lista,
había que buscarlo, me pasaron varias posibilidades de trabajo, en mi caso eran
días, pero en R la unidad de tiempo se cuenta a partir de una fecha fija y creo
que en segundos, en mi caso varias alternativas fallaron, o daban resultados que
al leerlos estaban bien, pero como yo conocía el valor real, encontré algunos
errores de R, ni idea el porqué (incluso copiado de libro), pero la solución en
mi caso es striptime(), r-project se actualizó, mejoro, etc., pero una vez que
tengo un código qua anda prefiero no tocarlo.
Le recomiendo que pruebe con pocos datos, según su versión de R, sistema
operativo, datos, etc. No confíe en los resultados hasta leer varios originales,
algún cálculo mental o con lápiz, y si está acorde continuar, el trabajo con
fechas por ahí da trabajo, aunque si todo anda bien es rapidísimo.
El resto, intente la ayuda de Daniel, si se presentan inconvenientes entre todos
buscaremos alguna forma, pero sería recomendable intercambiar códigos de R para
ser precisos.
Javier Marcuzzi
From: Pablo Andres Guzzi
Sent: Wednesday, November 28, 2012 12:05 PM
To: javier.ruben.marcuzzi ; daniel319
Cc: r-help-es
Subject: Re: [R-es] Hola, soy Pablo.
Daniel, ya me pongo a investigar el paquete zoo y mas precisamente el comando
rollappl.
Javier, Necesito los movimientos de los ultimos 60 minutos segun la fecha de la
transaccion. Si la transaccion tiene fecha de realizacion 28/11/2012 a las
12:00:00 necesito que la variable en cuestion cuente las trx realizadas desde
las 11:00:00 hasta las 12:00:00 del 28/11/2012
Abrazo
Pablo A. Guzzi
guzzipa@gmail.com
El 28 de noviembre de 2012 11:18, Usuario R <r.user.spain@gmail.com>
escribió:
Hola Pablo,
Soy Patricia la administradora de la lista. Bienvenido y muchas gracias por tu
email.
Quería también hacerte una pregunta, estas buscando trabajo? Yo soy también
licenciada en estadística y vivo en Berlin. Me mandan muchisimas ofertas de
trabajo y te podría pasar algunas, si estas interesado. Todas las ofertas son
para Alemania, sobretodo Berlin.
Bueno, espero que la lista te ayude con tus dudas, un abrazo.
Patricia
El 28 de noviembre de 2012 15:04, Pablo Andres Guzzi <guzzipa@gmail.com>
escribió:
Pablo A. Guzzi
--
Patricia García González
[[alternative HTML version deleted]]
Bueno finalmente lo resolvi...
de la siguiente manera
------------------------------------------------------------------------
------------------------
datos <- read.csv("C:/datos.csv")
datos ## estado inicial del data frame
n <- nrow(datos)
datos$Fecha<-as.Date(datos$Fecha, format=''%d/%m/%Y'')
datos$hora<-substring(datos$Hora, 1, 2)
datos$min<-substring(datos$Hora, 4, 5)
datos$seg<-substring(datos$Hora, 7, 8)
datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 +
as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 +
as.numeric(datos$seg)
for (i in 1:n) {
intervalo <- 60*60 #en segundos
tarj <- datos$Tarjeta[i]
t.i <- as.numeric(datos$tiempo[i])
t.ini <- t.i-intervalo
t.fin <- t.i
#me quedo con las trx de la tarjeta
temp<-subset(datos,datos$Tarjeta==tarj )
#me quedo con las trx en el intervalo que me interesa
temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
#hago la operacion que me interesa - en este caso sumo el importe
monto_hs_temp<-sum(temp2$Importe)
#asigno la operacion realizada al registro correspondiente
datos$montohs[i]<-monto_hs_temp
rm(temp)
rm(temp2)
rm(monto_hs_temp)
}
datos ##estado final del dataframe
------------------------------------------------------------------------
------------------------
anda perfecto!
lo que no se, es si se puede optimizar para que ande mas rapido, no es
lento con pocos datos. Pero no lo probe con 100000 transacciones todas
juntas. Despues les comento como funciona en datos masivos.
Abrazo
Pablo A. Guzzi
guzzipa@gmail.com
El 28 de noviembre de 2012 13:05, Marcuzzi, Javier Rubén <
javier.ruben.marcuzzi@gmail.com> escribió:
> Estimado Pablo
>
> Entonces su problema tiene algo parecido a algo que me paso, en esta
> lista, había que buscarlo, me pasaron varias posibilidades de trabajo, en
> mi caso eran días, pero en R la unidad de tiempo se cuenta a partir de una
> fecha fija y creo que en segundos, en mi caso varias alternativas fallaron,
> o daban resultados que al leerlos estaban bien, pero como yo conocía el
> valor real, encontré algunos errores de R, ni idea el porqué (incluso
> copiado de libro), pero la solución en mi caso es striptime(), r-project se
> actualizó, mejoro, etc., pero una vez que tengo un código qua anda prefiero
> no tocarlo.
>
> Le recomiendo que pruebe con pocos datos, según su versión de R, sistema
> operativo, datos, etc. No confíe en los resultados hasta leer varios
> originales, algún cálculo mental o con lápiz, y si está acorde continuar,
> el trabajo con fechas por ahí da trabajo, aunque si todo anda bien es
> rapidísimo.
>
> El resto, intente la ayuda de Daniel, si se presentan inconvenientes entre
> todos buscaremos alguna forma, pero sería recomendable intercambiar códigos
> de R para ser precisos.
>
> Javier Marcuzzi
>
> *From:* Pablo Andres Guzzi <guzzipa@gmail.com>
> *Sent:* Wednesday, November 28, 2012 12:05 PM
> *To:* javier.ruben.marcuzzi <javier.ruben.marcuzzi@gmail.com> ;
daniel319<daniel319@gmail.com>
> *Cc:* r-help-es <r-help-es@r-project.org>
> *Subject:* Re: [R-es] Hola, soy Pablo.
>
> Daniel, ya me pongo a investigar el paquete zoo y mas precisamente el
> comando rollappl.
>
> Javier, Necesito los movimientos de los ultimos 60 minutos segun la fecha
> de la transaccion. Si la transaccion tiene fecha de realizacion 28/11/2012
> a las 12:00:00 necesito que la variable en cuestion cuente las trx
> realizadas desde las 11:00:00 hasta las 12:00:00 del 28/11/2012
>
>
>
> Abrazo
>
> Pablo A. Guzzi
> guzzipa@gmail.com
>
>
>
>
> El 28 de noviembre de 2012 11:18, Usuario R
<r.user.spain@gmail.com>escribió:
>
>> Hola Pablo,
>>
>> Soy Patricia la administradora de la lista. Bienvenido y muchas gracias
>> por tu email.
>>
>> Quería también hacerte una pregunta, estas buscando trabajo? Yo soy
>> también licenciada en estadística y vivo en Berlin. Me mandan
muchisimas
>> ofertas de trabajo y te podría pasar algunas, si estas interesado.
Todas
>> las ofertas son para Alemania, sobretodo Berlin.
>>
>> Bueno, espero que la lista te ayude con tus dudas, un abrazo.
>>
>> Patricia
>>
>>
>>
>>
>>
>> El 28 de noviembre de 2012 15:04, Pablo Andres Guzzi
<guzzipa@gmail.com>escribió:
>>
>>> Pablo A. Guzzi
>>
>>
>>
>>
>> --
>> Patricia García González
>>
>>
>>
>
[[alternative HTML version deleted]]
Hola,
Hay algunos detalles que se pueden optimizar ya mismo y otros que los
apunto a la espera de poder tener algunos datos (si es posible) para
proponer la solución definitiva.
*A) Mejoras inmediatas:*
intervalo <- 3600 # esta variable la saco fuera del bucle ya evaluada es
fija.
for (i in 1:n) {
tarj <- datos$Tarjeta[i]
t.i <- datos$tiempo[i] #Evito hacer la conversión as.numeric.
Cuando defines tiempo (más arriba en el código, ya era todo
t.ini <- t.i-intervalo
t.fin <- t.i
#me quedo con las trx de la tarjeta
temp<-subset(datos,datos$Tarjeta==tarj )
#me quedo con las trx en el intervalo que me interesa
temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
#hago la operacion que me interesa - en este caso sumo el importe
monto_hs_temp<-sum(temp2$Importe)
#asigno la operacion realizada al registro correspondiente
datos$montohs[i]<-monto_hs_temp
rm(temp)
rm(temp2)
rm(monto_hs_temp)
}
B) Mejoras pendientes de datos para confirmar el código
intervalo <- 3600 # esta variable la saco fuera del bucle ya evaluada es
fija.
library(sqldf)
for (i in 1:n) {
tarj <- datos$Tarjeta[i]
t.i <- datos$tiempo[i] #Evito hacer la conversión as.numeric.
Cuando defines tiempo (más arriba en el código, ya era todo
t.ini <- t.i-intervalo
t.fin <- t.i
#me quedo con las trx de la tarjeta
#temp<-subset(datos,datos$Tarjeta==tarj )
#me quedo con las trx en el intervalo que me interesa
#temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
#hago la operacion que me interesa - en este caso sumo el importe
#monto_hs_temp<-sum(temp2$Importe)
## Todo lo anterior se puede ejecutar de una sola vez con la función
sqldf() del paquete "sqldf"
# la función tendría esta pinta:
monto_hs_temp <- fn$sqldf(" *sum(Importe) from datos *
* where Tarjeta =
''$tarj''
and *
* tiempo between $t.ini and
$t.fin " *)
#asigno la operación realizada al registro correspondiente
datos$montohs[i]<-monto_hs_temp
rm(temp)
rm(temp2)
rm(monto_hs_temp)
}
Saludos,
Carlos Ortega
www.qualityexcellence.es
El 29 de noviembre de 2012 15:17, Pablo Andres Guzzi
<guzzipa@gmail.com>escribió:
> Bueno finalmente lo resolvi...
> de la siguiente manera
>
>
>
>
> ------------------------------------------------------------------------
> ------------------------
> datos <- read.csv("C:/datos.csv")
>
> datos ## estado inicial del data frame
>
> n <- nrow(datos)
>
> datos$Fecha<-as.Date(datos$Fecha, format=''%d/%m/%Y'')
> datos$hora<-substring(datos$Hora, 1, 2)
> datos$min<-substring(datos$Hora, 4, 5)
> datos$seg<-substring(datos$Hora, 7, 8)
>
> datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 +
> as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 +
> as.numeric(datos$seg)
>
> for (i in 1:n) {
> intervalo <- 60*60 #en segundos
> tarj <- datos$Tarjeta[i]
> t.i <- as.numeric(datos$tiempo[i])
> t.ini <- t.i-intervalo
> t.fin <- t.i
>
> #me quedo con las trx de la tarjeta
> temp<-subset(datos,datos$Tarjeta==tarj )
> #me quedo con las trx en el intervalo que me interesa
> temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
>
> #hago la operacion que me interesa - en este caso sumo el importe
> monto_hs_temp<-sum(temp2$Importe)
>
> #asigno la operacion realizada al registro correspondiente
> datos$montohs[i]<-monto_hs_temp
>
> rm(temp)
> rm(temp2)
> rm(monto_hs_temp)
> }
>
> datos ##estado final del dataframe
>
> ------------------------------------------------------------------------
> ------------------------
>
> anda perfecto!
> lo que no se, es si se puede optimizar para que ande mas rapido, no es
> lento con pocos datos. Pero no lo probe con 100000 transacciones todas
> juntas. Despues les comento como funciona en datos masivos.
>
>
> Abrazo
>
> Pablo A. Guzzi
> guzzipa@gmail.com
>
>
>
>
> El 28 de noviembre de 2012 13:05, Marcuzzi, Javier Rubén <
> javier.ruben.marcuzzi@gmail.com> escribió:
>
> > Estimado Pablo
> >
> > Entonces su problema tiene algo parecido a algo que me paso, en esta
> > lista, había que buscarlo, me pasaron varias posibilidades de trabajo,
en
> > mi caso eran días, pero en R la unidad de tiempo se cuenta a partir de
> una
> > fecha fija y creo que en segundos, en mi caso varias alternativas
> fallaron,
> > o daban resultados que al leerlos estaban bien, pero como yo conocía
el
> > valor real, encontré algunos errores de R, ni idea el porqué (incluso
> > copiado de libro), pero la solución en mi caso es striptime(),
r-project
> se
> > actualizó, mejoro, etc., pero una vez que tengo un código qua anda
> prefiero
> > no tocarlo.
> >
> > Le recomiendo que pruebe con pocos datos, según su versión de R,
sistema
> > operativo, datos, etc. No confíe en los resultados hasta leer varios
> > originales, algún cálculo mental o con lápiz, y si está acorde
continuar,
> > el trabajo con fechas por ahí da trabajo, aunque si todo anda bien es
> > rapidísimo.
> >
> > El resto, intente la ayuda de Daniel, si se presentan inconvenientes
> entre
> > todos buscaremos alguna forma, pero sería recomendable intercambiar
> códigos
> > de R para ser precisos.
> >
> > Javier Marcuzzi
> >
> > *From:* Pablo Andres Guzzi <guzzipa@gmail.com>
> > *Sent:* Wednesday, November 28, 2012 12:05 PM
> > *To:* javier.ruben.marcuzzi <javier.ruben.marcuzzi@gmail.com> ;
> daniel319<daniel319@gmail.com>
> > *Cc:* r-help-es <r-help-es@r-project.org>
> > *Subject:* Re: [R-es] Hola, soy Pablo.
> >
> > Daniel, ya me pongo a investigar el paquete zoo y mas precisamente el
> > comando rollappl.
> >
> > Javier, Necesito los movimientos de los ultimos 60 minutos segun la
fecha
> > de la transaccion. Si la transaccion tiene fecha de realizacion
> 28/11/2012
> > a las 12:00:00 necesito que la variable en cuestion cuente las trx
> > realizadas desde las 11:00:00 hasta las 12:00:00 del 28/11/2012
> >
> >
> >
> > Abrazo
> >
> > Pablo A. Guzzi
> > guzzipa@gmail.com
> >
> >
> >
> >
> > El 28 de noviembre de 2012 11:18, Usuario R <r.user.spain@gmail.com
> >escribió:
> >
> >> Hola Pablo,
> >>
> >> Soy Patricia la administradora de la lista. Bienvenido y muchas
gracias
> >> por tu email.
> >>
> >> Quería también hacerte una pregunta, estas buscando trabajo? Yo
soy
> >> también licenciada en estadística y vivo en Berlin. Me mandan
muchisimas
> >> ofertas de trabajo y te podría pasar algunas, si estas interesado.
Todas
> >> las ofertas son para Alemania, sobretodo Berlin.
> >>
> >> Bueno, espero que la lista te ayude con tus dudas, un abrazo.
> >>
> >> Patricia
> >>
> >>
> >>
> >>
> >>
> >> El 28 de noviembre de 2012 15:04, Pablo Andres Guzzi
<guzzipa@gmail.com
> >escribió:
> >>
> >>> Pablo A. Guzzi
> >>
> >>
> >>
> >>
> >> --
> >> Patricia García González
> >>
> >>
> >>
> >
>
> [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]
Perfecto . Las correcciones inmediatas ya estan...
con la otra tuve problemas
________________________________________________________________________
datos <- read.csv("C:/datos.csv")
datos ## estado inicial del data frame
n <- nrow(datos)
datos$Fecha<-as.Date(datos$Fecha, format=''%d/%m/%Y'')
datos$hora<-substring(datos$Hora, 1, 2)
datos$min<-substring(datos$Hora, 4, 5)
datos$seg<-substring(datos$Hora, 7, 8)
datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 +
as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 +
as.numeric(datos$seg)
for (i in 1:n) {
intervalo <- 60*60 #en segundos
tarj <- datos$Tarjeta[i]
t.i <- as.numeric(datos$tiempo[i])
t_ini <- t.i-intervalo
t_fin <- t.i
monto_hs_temp <- sqldf(" select sum(Importe)
from datos
where Tarjeta = $tarj
and tiempo between $t_ini and $t_fin"
)
datos$montohs[i]<-monto_hs_temp
rm(monto_hs_temp)
}
________________________________________________________________________________
arroja el siguiente error
Error en sqliteExecStatement(con, statement, bind.data) :
RS-DBI driver: (error in statement: no such table: datos)Además:
Mensajes de aviso perdidosIn value[[3L]](cond) :
RAW() can only be applied to a ''raw'', not a
''character''
Abrazo
Pablo A. Guzzi
guzzipa@gmail.com
El 29 de noviembre de 2012 12:16, Carlos Ortega
<cof@qualityexcellence.es>escribió:
> Hola,
>
> Hay algunos detalles que se pueden optimizar ya mismo y otros que los
> apunto a la espera de poder tener algunos datos (si es posible) para
> proponer la solución definitiva.
>
> *A) Mejoras inmediatas:*
>
> intervalo <- 3600 # esta variable la saco fuera del bucle ya evaluada es
> fija.
> for (i in 1:n) {
> tarj <- datos$Tarjeta[i]
> t.i <- datos$tiempo[i] #Evito hacer la conversión as.numeric.
> Cuando defines tiempo (más arriba en el código, ya era todo
> t.ini <- t.i-intervalo
> t.fin <- t.i
>
> #me quedo con las trx de la tarjeta
> temp<-subset(datos,datos$Tarjeta==tarj )
> #me quedo con las trx en el intervalo que me interesa
> temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
>
> #hago la operacion que me interesa - en este caso sumo el importe
> monto_hs_temp<-sum(temp2$Importe)
>
> #asigno la operacion realizada al registro correspondiente
> datos$montohs[i]<-monto_hs_temp
>
> rm(temp)
> rm(temp2)
> rm(monto_hs_temp)
> }
>
> B) Mejoras pendientes de datos para confirmar el código
>
>
> intervalo <- 3600 # esta variable la saco fuera del bucle ya evaluada es
> fija.
> library(sqldf)
> for (i in 1:n) {
> tarj <- datos$Tarjeta[i]
> t.i <- datos$tiempo[i] #Evito hacer la conversión as.numeric.
> Cuando defines tiempo (más arriba en el código, ya era todo
>
> t.ini <- t.i-intervalo
> t.fin <- t.i
>
> #me quedo con las trx de la tarjeta
> #temp<-subset(datos,datos$Tarjeta==tarj )
>
> #me quedo con las trx en el intervalo que me interesa
> #temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
> #hago la operacion que me interesa - en este caso sumo el importe
>
> #monto_hs_temp<-sum(temp2$Importe)
>
> ## Todo lo anterior se puede ejecutar de una sola vez con la función
> sqldf() del paquete "sqldf"
> # la función tendría esta pinta:
> monto_hs_temp <- fn$sqldf(" *sum(Importe) from datos *
> * where Tarjeta =
''$tarj''
> and *
> * tiempo between $t.ini
> and $t.fin " *)
>
> #asigno la operación realizada al registro correspondiente
>
> datos$montohs[i]<-monto_hs_temp
>
> rm(temp)
> rm(temp2)
> rm(monto_hs_temp)
> }
>
>
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
> El 29 de noviembre de 2012 15:17, Pablo Andres Guzzi
<guzzipa@gmail.com>escribió:
>
>> Bueno finalmente lo resolvi...
>> de la siguiente manera
>>
>>
>>
>>
>>
------------------------------------------------------------------------
>> ------------------------
>> datos <- read.csv("C:/datos.csv")
>>
>> datos ## estado inicial del data frame
>>
>> n <- nrow(datos)
>>
>> datos$Fecha<-as.Date(datos$Fecha,
format=''%d/%m/%Y'')
>> datos$hora<-substring(datos$Hora, 1, 2)
>> datos$min<-substring(datos$Hora, 4, 5)
>> datos$seg<-substring(datos$Hora, 7, 8)
>>
>> datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 +
>> as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 +
>> as.numeric(datos$seg)
>>
>> for (i in 1:n) {
>> intervalo <- 60*60 #en segundos
>> tarj <- datos$Tarjeta[i]
>> t.i <- as.numeric(datos$tiempo[i])
>> t.ini <- t.i-intervalo
>> t.fin <- t.i
>>
>> #me quedo con las trx de la tarjeta
>> temp<-subset(datos,datos$Tarjeta==tarj )
>> #me quedo con las trx en el intervalo que me interesa
>> temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
>>
>> #hago la operacion que me interesa - en este caso sumo el importe
>> monto_hs_temp<-sum(temp2$Importe)
>>
>> #asigno la operacion realizada al registro correspondiente
>> datos$montohs[i]<-monto_hs_temp
>>
>> rm(temp)
>> rm(temp2)
>> rm(monto_hs_temp)
>> }
>>
>> datos ##estado final del dataframe
>>
>>
------------------------------------------------------------------------
>> ------------------------
>>
>> anda perfecto!
>> lo que no se, es si se puede optimizar para que ande mas rapido, no es
>> lento con pocos datos. Pero no lo probe con 100000 transacciones todas
>> juntas. Despues les comento como funciona en datos masivos.
>>
>>
>> Abrazo
>>
>> Pablo A. Guzzi
>> guzzipa@gmail.com
>>
>>
>>
>>
>> El 28 de noviembre de 2012 13:05, Marcuzzi, Javier Rubén <
>> javier.ruben.marcuzzi@gmail.com> escribió:
>>
>> > Estimado Pablo
>> >
>> > Entonces su problema tiene algo parecido a algo que me paso, en
esta
>> > lista, había que buscarlo, me pasaron varias posibilidades de
trabajo,
>> en
>> > mi caso eran días, pero en R la unidad de tiempo se cuenta a
partir de
>> una
>> > fecha fija y creo que en segundos, en mi caso varias alternativas
>> fallaron,
>> > o daban resultados que al leerlos estaban bien, pero como yo
conocía el
>> > valor real, encontré algunos errores de R, ni idea el porqué
(incluso
>> > copiado de libro), pero la solución en mi caso es striptime(),
>> r-project se
>> > actualizó, mejoro, etc., pero una vez que tengo un código qua anda
>> prefiero
>> > no tocarlo.
>> >
>> > Le recomiendo que pruebe con pocos datos, según su versión de R,
sistema
>> > operativo, datos, etc. No confíe en los resultados hasta leer
varios
>> > originales, algún cálculo mental o con lápiz, y si está acorde
>> continuar,
>> > el trabajo con fechas por ahí da trabajo, aunque si todo anda bien
es
>> > rapidísimo.
>> >
>> > El resto, intente la ayuda de Daniel, si se presentan
inconvenientes
>> entre
>> > todos buscaremos alguna forma, pero sería recomendable
intercambiar
>> códigos
>> > de R para ser precisos.
>> >
>> > Javier Marcuzzi
>> >
>> > *From:* Pablo Andres Guzzi <guzzipa@gmail.com>
>> > *Sent:* Wednesday, November 28, 2012 12:05 PM
>> > *To:* javier.ruben.marcuzzi
<javier.ruben.marcuzzi@gmail.com> ;
>> daniel319<daniel319@gmail.com>
>> > *Cc:* r-help-es <r-help-es@r-project.org>
>> > *Subject:* Re: [R-es] Hola, soy Pablo.
>> >
>> > Daniel, ya me pongo a investigar el paquete zoo y mas precisamente
el
>> > comando rollappl.
>> >
>> > Javier, Necesito los movimientos de los ultimos 60 minutos segun
la
>> fecha
>> > de la transaccion. Si la transaccion tiene fecha de realizacion
>> 28/11/2012
>> > a las 12:00:00 necesito que la variable en cuestion cuente las trx
>> > realizadas desde las 11:00:00 hasta las 12:00:00 del 28/11/2012
>> >
>> >
>> >
>> > Abrazo
>> >
>> > Pablo A. Guzzi
>> > guzzipa@gmail.com
>> >
>> >
>> >
>> >
>> > El 28 de noviembre de 2012 11:18, Usuario R
<r.user.spain@gmail.com
>> >escribió:
>> >
>> >> Hola Pablo,
>> >>
>> >> Soy Patricia la administradora de la lista. Bienvenido y
muchas gracias
>> >> por tu email.
>> >>
>> >> Quería también hacerte una pregunta, estas buscando trabajo?
Yo soy
>> >> también licenciada en estadística y vivo en Berlin. Me mandan
>> muchisimas
>> >> ofertas de trabajo y te podría pasar algunas, si estas
interesado.
>> Todas
>> >> las ofertas son para Alemania, sobretodo Berlin.
>> >>
>> >> Bueno, espero que la lista te ayude con tus dudas, un abrazo.
>> >>
>> >> Patricia
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> El 28 de noviembre de 2012 15:04, Pablo Andres Guzzi <
>> guzzipa@gmail.com>escribió:
>> >>
>> >>> Pablo A. Guzzi
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> Patricia García González
>> >>
>> >>
>> >>
>> >
>>
>> [[alternative HTML version deleted]]
>>
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
[[alternative HTML version deleted]]
Hola,
Comentaba que mejor que adjuntaras parte de tus datos para comprobar que
todo funcionaba.
Como estás pasando variables a la consulta SQL, hay que poner comillas
alrededor de las variable de texto.
Mejor esto:
###########################################
intervalo <- 3600
for (i in 1:n) {
tarj <- datos$Tarjeta[i]
t.i <- datos$tiempo[i]
t_ini <- t.i-intervalo
t_fin <- t.i
monto_hs_temp <- sqldf(
paste("select sum(Importe) from
datos where Tarjeta = ", tarj,
"and tiempo between ",
t_ini, " and ", $t_fin, sep="")
)
datos$montohs[i]<-monto_hs_temp
rm(monto_hs_temp)
}
#########################################
En el caso de que no llegue a funcionar, ¿me puedes enviar una parte de tus
datos para comprobar el detalle de lo que falla?
Saludos,
Carlos Ortega
www.qualityexcellence.es
El 29 de noviembre de 2012 18:28, Pablo Andres Guzzi
<guzzipa@gmail.com>escribió:
> Perfecto . Las correcciones inmediatas ya estan...
>
> con la otra tuve problemas
>
> ________________________________________________________________________
>
> datos <- read.csv("C:/datos.csv")
>
> datos ## estado inicial del data frame
>
> n <- nrow(datos)
>
> datos$Fecha<-as.Date(datos$Fecha, format=''%d/%m/%Y'')
> datos$hora<-substring(datos$Hora, 1, 2)
> datos$min<-substring(datos$Hora, 4, 5)
> datos$seg<-substring(datos$Hora, 7, 8)
>
> datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 +
> as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 +
> as.numeric(datos$seg)
>
> for (i in 1:n) {
> intervalo <- 60*60 #en segundos
> tarj <- datos$Tarjeta[i]
> t.i <- as.numeric(datos$tiempo[i])
> t_ini <- t.i-intervalo
> t_fin <- t.i
>
> monto_hs_temp <- sqldf(" select sum(Importe)
>
> from datos
> where Tarjeta = $tarj
> and tiempo between $t_ini and $t_fin"
> )
>
> datos$montohs[i]<-monto_hs_temp
>
> rm(monto_hs_temp)
> }
>
>
________________________________________________________________________________
>
> arroja el siguiente error
>
> Error en sqliteExecStatement(con, statement, bind.data) :
> RS-DBI driver: (error in statement: no such table: datos)Además: Mensajes
de aviso perdidosIn value[[3L]](cond) :
> RAW() can only be applied to a ''raw'', not a
''character''
>
>
>
>
>
> Abrazo
>
> Pablo A. Guzzi
> guzzipa@gmail.com
>
>
>
>
> El 29 de noviembre de 2012 12:16, Carlos Ortega
<cof@qualityexcellence.es>escribió:
>
> Hola,
>>
>> Hay algunos detalles que se pueden optimizar ya mismo y otros que los
>> apunto a la espera de poder tener algunos datos (si es posible) para
>> proponer la solución definitiva.
>>
>> *A) Mejoras inmediatas:*
>>
>> intervalo <- 3600 # esta variable la saco fuera del bucle ya
evaluada es
>> fija.
>> for (i in 1:n) {
>> tarj <- datos$Tarjeta[i]
>> t.i <- datos$tiempo[i] #Evito hacer la conversión
as.numeric.
>> Cuando defines tiempo (más arriba en el código, ya era todo
>> t.ini <- t.i-intervalo
>> t.fin <- t.i
>>
>> #me quedo con las trx de la tarjeta
>> temp<-subset(datos,datos$Tarjeta==tarj )
>> #me quedo con las trx en el intervalo que me interesa
>> temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
>>
>> #hago la operacion que me interesa - en este caso sumo el importe
>> monto_hs_temp<-sum(temp2$Importe)
>>
>> #asigno la operacion realizada al registro correspondiente
>> datos$montohs[i]<-monto_hs_temp
>>
>> rm(temp)
>> rm(temp2)
>> rm(monto_hs_temp)
>> }
>>
>> B) Mejoras pendientes de datos para confirmar el código
>>
>>
>> intervalo <- 3600 # esta variable la saco fuera del bucle ya
evaluada es
>> fija.
>> library(sqldf)
>> for (i in 1:n) {
>> tarj <- datos$Tarjeta[i]
>> t.i <- datos$tiempo[i] #Evito hacer la conversión
as.numeric.
>> Cuando defines tiempo (más arriba en el código, ya era todo
>>
>> t.ini <- t.i-intervalo
>> t.fin <- t.i
>>
>> #me quedo con las trx de la tarjeta
>> #temp<-subset(datos,datos$Tarjeta==tarj )
>>
>> #me quedo con las trx en el intervalo que me interesa
>> #temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)
>> #hago la operacion que me interesa - en este caso sumo el importe
>>
>> #monto_hs_temp<-sum(temp2$Importe)
>>
>> ## Todo lo anterior se puede ejecutar de una sola vez con la función
>> sqldf() del paquete "sqldf"
>> # la función tendría esta pinta:
>> monto_hs_temp <- fn$sqldf(" *sum(Importe) from datos *
>> * where Tarjeta
>> ''$tarj'' and *
>> * tiempo between $t.ini
>> and $t.fin " *)
>>
>> #asigno la operación realizada al registro correspondiente
>>
>> datos$montohs[i]<-monto_hs_temp
>>
>> rm(temp)
>> rm(temp2)
>> rm(monto_hs_temp)
>> }
>>
>>
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>
>> El 29 de noviembre de 2012 15:17, Pablo Andres Guzzi
<guzzipa@gmail.com>escribió:
>>
>>> Bueno finalmente lo resolvi...
>>> de la siguiente manera
>>>
>>>
>>>
>>>
>>>
------------------------------------------------------------------------
>>> ------------------------
>>> datos <- read.csv("C:/datos.csv")
>>>
>>> datos ## estado inicial del data frame
>>>
>>> n <- nrow(datos)
>>>
>>> datos$Fecha<-as.Date(datos$Fecha,
format=''%d/%m/%Y'')
>>> datos$hora<-substring(datos$Hora, 1, 2)
>>> datos$min<-substring(datos$Hora, 4, 5)
>>> datos$seg<-substring(datos$Hora, 7, 8)
>>>
>>> datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 +
>>> as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 +
>>> as.numeric(datos$seg)
>>>
>>> for (i in 1:n) {
>>> intervalo <- 60*60 #en segundos
>>> tarj <- datos$Tarjeta[i]
>>> t.i <- as.numeric(datos$tiempo[i])
>>> t.ini <- t.i-intervalo
>>> t.fin <- t.i
>>>
>>> #me quedo con las trx de la tarjeta
>>> temp<-subset(datos,datos$Tarjeta==tarj )
>>> #me quedo con las trx en el intervalo que me interesa
>>> temp2<-subset(temp, tiempo >= t.ini & tiempo <=
t.fin)
>>>
>>> #hago la operacion que me interesa - en este caso sumo el importe
>>> monto_hs_temp<-sum(temp2$Importe)
>>>
>>> #asigno la operacion realizada al registro correspondiente
>>> datos$montohs[i]<-monto_hs_temp
>>>
>>> rm(temp)
>>> rm(temp2)
>>> rm(monto_hs_temp)
>>> }
>>>
>>> datos ##estado final del dataframe
>>>
>>>
------------------------------------------------------------------------
>>> ------------------------
>>>
>>> anda perfecto!
>>> lo que no se, es si se puede optimizar para que ande mas rapido, no
es
>>> lento con pocos datos. Pero no lo probe con 100000 transacciones
todas
>>> juntas. Despues les comento como funciona en datos masivos.
>>>
>>>
>>> Abrazo
>>>
>>> Pablo A. Guzzi
>>> guzzipa@gmail.com
>>>
>>>
>>>
>>>
>>> El 28 de noviembre de 2012 13:05, Marcuzzi, Javier Rubén <
>>> javier.ruben.marcuzzi@gmail.com> escribió:
>>>
>>> > Estimado Pablo
>>> >
>>> > Entonces su problema tiene algo parecido a algo que me paso,
en esta
>>> > lista, había que buscarlo, me pasaron varias posibilidades de
trabajo,
>>> en
>>> > mi caso eran días, pero en R la unidad de tiempo se cuenta a
partir de
>>> una
>>> > fecha fija y creo que en segundos, en mi caso varias
alternativas
>>> fallaron,
>>> > o daban resultados que al leerlos estaban bien, pero como yo
conocía el
>>> > valor real, encontré algunos errores de R, ni idea el porqué
(incluso
>>> > copiado de libro), pero la solución en mi caso es striptime(),
>>> r-project se
>>> > actualizó, mejoro, etc., pero una vez que tengo un código qua
anda
>>> prefiero
>>> > no tocarlo.
>>> >
>>> > Le recomiendo que pruebe con pocos datos, según su versión de
R,
>>> sistema
>>> > operativo, datos, etc. No confíe en los resultados hasta leer
varios
>>> > originales, algún cálculo mental o con lápiz, y si está acorde
>>> continuar,
>>> > el trabajo con fechas por ahí da trabajo, aunque si todo anda
bien es
>>> > rapidísimo.
>>> >
>>> > El resto, intente la ayuda de Daniel, si se presentan
inconvenientes
>>> entre
>>> > todos buscaremos alguna forma, pero sería recomendable
intercambiar
>>> códigos
>>> > de R para ser precisos.
>>> >
>>> > Javier Marcuzzi
>>> >
>>> > *From:* Pablo Andres Guzzi <guzzipa@gmail.com>
>>> > *Sent:* Wednesday, November 28, 2012 12:05 PM
>>> > *To:* javier.ruben.marcuzzi
<javier.ruben.marcuzzi@gmail.com> ;
>>> daniel319<daniel319@gmail.com>
>>> > *Cc:* r-help-es <r-help-es@r-project.org>
>>> > *Subject:* Re: [R-es] Hola, soy Pablo.
>>> >
>>> > Daniel, ya me pongo a investigar el paquete zoo y mas
precisamente el
>>> > comando rollappl.
>>> >
>>> > Javier, Necesito los movimientos de los ultimos 60 minutos
segun la
>>> fecha
>>> > de la transaccion. Si la transaccion tiene fecha de
realizacion
>>> 28/11/2012
>>> > a las 12:00:00 necesito que la variable en cuestion cuente las
trx
>>> > realizadas desde las 11:00:00 hasta las 12:00:00 del
28/11/2012
>>> >
>>> >
>>> >
>>> > Abrazo
>>> >
>>> > Pablo A. Guzzi
>>> > guzzipa@gmail.com
>>> >
>>> >
>>> >
>>> >
>>> > El 28 de noviembre de 2012 11:18, Usuario R
<r.user.spain@gmail.com
>>> >escribió:
>>> >
>>> >> Hola Pablo,
>>> >>
>>> >> Soy Patricia la administradora de la lista. Bienvenido y
muchas
>>> gracias
>>> >> por tu email.
>>> >>
>>> >> Quería también hacerte una pregunta, estas buscando
trabajo? Yo soy
>>> >> también licenciada en estadística y vivo en Berlin. Me
mandan
>>> muchisimas
>>> >> ofertas de trabajo y te podría pasar algunas, si estas
interesado.
>>> Todas
>>> >> las ofertas son para Alemania, sobretodo Berlin.
>>> >>
>>> >> Bueno, espero que la lista te ayude con tus dudas, un
abrazo.
>>> >>
>>> >> Patricia
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> El 28 de noviembre de 2012 15:04, Pablo Andres Guzzi <
>>> guzzipa@gmail.com>escribió:
>>> >>
>>> >>> Pablo A. Guzzi
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Patricia García González
>>> >>
>>> >>
>>> >>
>>> >
>>>
>>> [[alternative HTML version deleted]]
>>>
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es@r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>
>
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]