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]]

