<font><font face="verdana,sans-serif">intente <font>hacerlo <font>andar pe<font>ro hay algo que estoy <font>omitiendo e<font>videntemente</font></font></font></font></font></font></font><br><br>(adjunto csv)<br><br><font><font face="verdana,sans-serif"><font><font face="verdana,sans-serif"><font>######################################</font></font></font><br>

<font>datos <- read.csv("C:/datos.csv")<br><br>datos ## estado inicial del data frame<br><br>n <- nrow(datos)<br><br>datos$Fecha<-as.Date(datos$Fecha, format='%d/%m/%Y')<br>datos$hora<-substring(datos$Hora, 1, 2)<br>

datos$min<-substring(datos$Hora, 4, 5)<br>datos$seg<-substring(datos$Hora, 7, 8)<br><br>datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 + as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 + as.numeric(datos$seg)<br>

<br>intervalo <- 3600<br><br>for (i in 1:n) {<br> <br>  tarj <- datos$Tarjeta[i]<br>  t.i <- datos$tiempo[i]<br>  t_ini <- t.i-intervalo<br>  t_fin <- t.i<br>  <br>  monto_hs_temp <- sqldf(<br>                      paste("select sum(Importe) from datos where Tarjeta = '",<br>

                        tarj,<br>                        " and tiempo between ",<br>                        t_ini,<br>                        " and ",<br>                        t_fin,<br>                        sep="")<br>

                     )<br>  <br>  datos$montohs[i]<-monto_hs_temp<br>  <br>  rm(monto_hs_temp)<br>}<br><br>######################################</font><br></font></font><div class="gmail_extra"><br clear="all"><div><font face="verdana, sans-serif">Abrazo</font></div>

<div><font face="verdana, sans-serif"><br></font></div><font face="verdana, sans-serif">Pablo A. Guzzi</font><div><a href="mailto:guzzipa@gmail.com" target="_blank"><font face="verdana, sans-serif">guzzipa@gmail.com</font></a></div>

<div><font face="verdana, sans-serif"><br></font></div><br>
<br><br><div class="gmail_quote">El 29 de noviembre de 2012 15:30, Carlos Ortega <span dir="ltr"><<a href="mailto:cof@qualityexcellence.es" target="_blank">cof@qualityexcellence.es</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hola,<div><br></div><div>Comentaba que mejor que adjuntaras parte de tus datos para comprobar que todo funcionaba.</div><div>Como estás pasando variables a la consulta SQL, hay que poner comillas alrededor de las variable de texto.</div>


<div>Mejor esto:</div><div><br></div><div>###########################################</div><div>intervalo <- 3600</div><div><br></div><div><div class="im"><div>for (i in 1:n) {<br>  <br>  tarj <- datos$Tarjeta[i]<br>

  t.i <- datos$tiempo[i]<br>
</div></div><div class="im">  t_ini <- t.i-intervalo<br>  t_fin <- t.i<br>  <br>  monto_hs_temp <- sqldf(</div></div><div>                                      paste("select sum(Importe) from datos where Tarjeta = ", tarj,<br>

                                                "and tiempo between ", t_ini, " and ", $t_fin, sep="")<div class="im"><br>
                              )<br><br>  datos$montohs[i]<-monto_hs_temp<br>  <br>  rm(monto_hs_temp)<br>}<br></div></div><div><br></div><div>#########################################</div><div><br></div><div>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?</div>


<div><br></div><div>Saludos,</div><div>Carlos Ortega</div><div><a href="http://www.qualityexcellence.es" target="_blank">www.qualityexcellence.es</a></div><div class="gmail_extra"><br><br><div class="gmail_quote">El 29 de noviembre de 2012 18:28, Pablo Andres Guzzi <span dir="ltr"><<a href="mailto:guzzipa@gmail.com" target="_blank">guzzipa@gmail.com</a>></span> escribió:<div>

<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font><font face="verdana,sans-serif"><font>Perfecto <font>. Las corre<font>cciones inmediatas ya esta<font>n...<br>


<br><font>con la otra tuve probl<font>emas<br></font></font></font></font></font></font></font></font><br>

________________________________________________________________________<div><br>datos <- read.csv("C:/datos.csv")<br><br>datos ## estado inicial del data frame<br><br>n <- nrow(datos)<br><br>datos$Fecha<-as.Date(datos$Fecha, format='%d/%m/%Y')<br>




datos$hora<-substring(datos$Hora, 1, 2)<br>datos$min<-substring(datos$Hora, 4, 5)<br>datos$seg<-substring(datos$Hora, 7, 8)<br><br>datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 + as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 + as.numeric(datos$seg)<br>




<br>for (i in 1:n) {<br>  intervalo <- 60*60  #en segundos<br>  tarj <- datos$Tarjeta[i]<br>  t.i <- as.numeric(datos$tiempo[i])<br></div>  t_ini <- t.i-intervalo<br>  t_fin <- t.i<br>  <br>  monto_hs_temp <- sqldf(" select sum(Importe)<div>


<br>

                           from datos <br>                           where Tarjeta = $tarj<br></div>                                 and tiempo between $t_ini and $t_fin"<br>                         )<br><br>  datos$montohs[i]<-monto_hs_temp<br>




  <br>  rm(monto_hs_temp)<br>}<br>________________________________________________________________________________<br><br>arroja el siguiente error <br><br><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;font-style:normal;background-color:rgb(225,226,229);font-weight:normal;line-height:15px;border-collapse:separate;text-transform:none;font-size:13px;white-space:pre-wrap;font-family:'Lucida Console';word-spacing:0px"><pre style="font-family:'Lucida Console';outline-style:none;border-style:none;margin:0px;line-height:1.2;font-size:10pt!important;white-space:pre-wrap!important">

<span>Error en sqliteExecStatement(con, statement, bind.data) : 
  RS-DBI driver: (error in statement: no such table: datos)
</span><span>Además: </span><span>Mensajes de aviso perdidos
</span><span>In value[[3L]](cond) :
  RAW() can only be applied to a 'raw', not a 'character'<br><br><br></span></pre></span><br><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;font-style:normal;background-color:rgb(225,226,229);font-weight:normal;line-height:15px;border-collapse:separate;text-transform:none;font-size:13px;white-space:pre-wrap;font-family:'Lucida Console';word-spacing:0px"><pre style="font-family:'Lucida Console';outline-style:none;border-style:none;margin:0px;line-height:1.2;font-size:10pt!important;white-space:pre-wrap!important">

<span><br></span></pre></span><div class="gmail_extra"><div><br clear="all"><div><font face="verdana, sans-serif">Abrazo</font></div><div><font face="verdana, sans-serif"><br></font></div><font face="verdana, sans-serif">Pablo A. Guzzi</font><div>




<a href="mailto:guzzipa@gmail.com" target="_blank"><font face="verdana, sans-serif">guzzipa@gmail.com</font></a></div><div><font face="verdana, sans-serif"><br></font></div><br>
<br><br></div><div class="gmail_quote">El 29 de noviembre de 2012 12:16, Carlos Ortega <span dir="ltr"><<a href="mailto:cof@qualityexcellence.es" target="_blank">cof@qualityexcellence.es</a>></span> escribió:<div><div>


<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<font face="verdana, sans-serif">Hola,</font><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">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.</font></div>





<div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif"><b>A)  Mejoras inmediatas:</b></font></div><div><font face="verdana, sans-serif"><br></font></div><div><font color="#ff0000" face="verdana, sans-serif">intervalo <- 3600 # esta variable la saco fuera del bucle ya evaluada es fija.</font></div>




<div>
<div><span style="font-size:13.333333969116211px;font-family:verdana,sans-serif">for (i in 1:n) {</span><br></div></div><div><font face="verdana, sans-serif"><span style="font-size:13.333333969116211px"> </span><span style="font-size:13.333333969116211px"> tarj <- datos$Tarjeta[i]</span><br style="font-size:13.333333969116211px">





<span style="font-size:13.333333969116211px">  t.i <- datos$tiempo[i]       <font color="#ff0000">#Evito hacer la conversión as.numeric. Cuando defines tiempo (más arriba en el código, ya era todo </font></span><br style="font-size:13.333333969116211px">




<div>
<span style="font-size:13.333333969116211px">  t.ini <- t.i-intervalo</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  t.fin <- t.i</span><br style="font-size:13.333333969116211px">





<br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  #me quedo con las trx de la tarjeta</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  temp<-subset(datos,datos$</span><span style="font-size:13.333333969116211px">Tarjeta==tarj )</span><br style="font-size:13.333333969116211px">





<span style="font-size:13.333333969116211px">  #me quedo con las trx en el intervalo que me interesa</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)</span><br style="font-size:13.333333969116211px">





<br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  #hago la operacion que me interesa - en este caso sumo el importe</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  monto_hs_temp<-sum(temp2$</span><span style="font-size:13.333333969116211px">Importe)</span><br style="font-size:13.333333969116211px">





<br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  #asigno la operacion realizada al registro correspondiente</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  datos$montohs[i]<-monto_hs_</span><span style="font-size:13.333333969116211px">temp</span><br style="font-size:13.333333969116211px">





<br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  rm(temp)</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  rm(temp2)</span><br style="font-size:13.333333969116211px">





<span style="font-size:13.333333969116211px">  rm(monto_hs_temp)</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">}</span><br></div></font></div><div><font face="verdana, sans-serif"><br>





</font></div><div><font face="verdana, sans-serif">B) Mejoras pendientes de datos para confirmar el código</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif"><br></font></div>





<div><div><font color="#ff0000" face="verdana, sans-serif">intervalo <- 3600 # esta variable la saco fuera del bucle ya evaluada es fija.</font></div><div><font color="#ff0000" face="verdana, sans-serif">library(sqldf)</font></div>




<div>
<div><span style="font-size:13.333333969116211px;font-family:verdana,sans-serif">for (i in 1:n) {</span><br></div></div><div><font face="verdana, sans-serif"><span style="font-size:13.333333969116211px"> </span><span style="font-size:13.333333969116211px"> tarj <- datos$Tarjeta[i]</span><br style="font-size:13.333333969116211px">





<span style="font-size:13.333333969116211px">  t.i <- datos$tiempo[i]       <font color="#ff0000">#Evito hacer la conversión as.numeric. Cuando defines tiempo (más arriba en el código, ya era todo </font></span><div>

<br style="font-size:13.333333969116211px">
<span style="font-size:13.333333969116211px">  t.ini <- t.i-intervalo</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  t.fin <- t.i</span><br style="font-size:13.333333969116211px">





<br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  #me quedo con las trx de la tarjeta</span><br style="font-size:13.333333969116211px"></div><span style="font-size:13.333333969116211px">  #temp<-subset(datos,datos$</span><span style="font-size:13.333333969116211px">Tarjeta==tarj )</span><div>




<br style="font-size:13.333333969116211px">
<span style="font-size:13.333333969116211px">  #me quedo con las trx en el intervalo que me interesa</span><br style="font-size:13.333333969116211px"></div><span style="font-size:13.333333969116211px">  #temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)</span><br style="font-size:13.333333969116211px">





</font><div><span style="font-size:13.333333969116211px;font-family:verdana,sans-serif">  #hago la operacion que me interesa - en este caso sumo el importe</span></div><font face="verdana, sans-serif"><br><span style="font-size:13.333333969116211px">  #monto_hs_temp<-sum(temp2$</span><span style="font-size:13.333333969116211px">Importe)</span><br style="font-size:13.333333969116211px">





<br>  ## Todo lo anterior se puede ejecutar de una sola vez con la función sqldf() del paquete "sqldf"</font></div><div><font face="verdana, sans-serif">  # la función tendría esta pinta:</font></div><div><font face="verdana, sans-serif">  monto_hs_temp <- fn$sqldf(" <i><font color="#ff0000">sum(Importe) from datos </font></i></font></div>





<div><font face="verdana, sans-serif"><i><font color="#ff0000">                                                 where Tarjeta = '$tarj' and </font></i></font></div><div><font face="verdana, sans-serif"><i><font color="#ff0000">                                                 tiempo between $t.ini and $t.fin " </font></i>)<br>





<br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  #asigno la operación realizada al registro correspondiente</span><div><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  datos$montohs[i]<-monto_hs_</span><span style="font-size:13.333333969116211px">temp</span><br style="font-size:13.333333969116211px">





<br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  rm(temp)</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">  rm(temp2)</span><br style="font-size:13.333333969116211px">





<span style="font-size:13.333333969116211px">  rm(monto_hs_temp)</span><br style="font-size:13.333333969116211px"><span style="font-size:13.333333969116211px">}</span><br></div></font></div></div><div><font face="verdana, sans-serif"><span style="font-size:13.333333969116211px"><br>





</span></font></div><div><br></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">Saludos,</font></div><div><font face="verdana, sans-serif">Carlos Ortega</font></div><div><font face="verdana, sans-serif"><a href="http://www.qualityexcellence.es" target="_blank">www.qualityexcellence.es</a></font></div>





<div class="gmail_extra"><br><br><div class="gmail_quote">El 29 de noviembre de 2012 15:17, Pablo Andres Guzzi <span dir="ltr"><<a href="mailto:guzzipa@gmail.com" target="_blank">guzzipa@gmail.com</a>></span> escribió:<br>





<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div>Bueno finalmente lo resolvi...<br>
de la siguiente manera<br>
<br>
<br>
<br>
<br>
------------------------------------------------------------------------<br>
------------------------<br>
<div>datos <- read.csv("C:/datos.csv")<br>
<br>
datos ## estado inicial del data frame<br>
<br>
</div>n <- nrow(datos)<br>
<br>
datos$Fecha<-as.Date(datos$Fecha, format='%d/%m/%Y')<br>
datos$hora<-substring(datos$Hora, 1, 2)<br>
datos$min<-substring(datos$Hora, 4, 5)<br>
datos$seg<-substring(datos$Hora, 7, 8)<br>
<br>
datos$tiempo<-as.numeric(datos$Fecha)*24*60*60 +<br>
as.numeric(datos$hora)*60*60 + as.numeric(datos$min)*60 +<br>
as.numeric(datos$seg)<br>
<br>
for (i in 1:n) {<br>
  intervalo <- 60*60  #en segundos<br>
  tarj <- datos$Tarjeta[i]<br>
  t.i <- as.numeric(datos$tiempo[i])<br>
  t.ini <- t.i-intervalo<br>
  t.fin <- t.i<br>
<br>
  #me quedo con las trx de la tarjeta<br>
  temp<-subset(datos,datos$Tarjeta==tarj )<br>
  #me quedo con las trx en el intervalo que me interesa<br>
  temp2<-subset(temp, tiempo >= t.ini & tiempo <= t.fin)<br>
<br>
  #hago la operacion que me interesa - en este caso sumo el importe<br>
  monto_hs_temp<-sum(temp2$Importe)<br>
<br>
  #asigno la operacion realizada al registro correspondiente<br>
  datos$montohs[i]<-monto_hs_temp<br>
<br>
  rm(temp)<br>
  rm(temp2)<br>
  rm(monto_hs_temp)<br>
}<br>
<br>
datos  ##estado final del dataframe<br>
<br>
------------------------------------------------------------------------<br>
------------------------<br>
<br>
anda perfecto!<br>
lo que no se, es si se puede optimizar para que ande mas rapido, no es<br>
lento con pocos datos. Pero no lo probe con 100000 transacciones todas<br>
juntas. Despues les comento como funciona en datos masivos.<br>
<div><br>
<br>
Abrazo<br>
<br>
Pablo A. Guzzi<br>
<a href="mailto:guzzipa@gmail.com" target="_blank">guzzipa@gmail.com</a><br>
<br>
<br>
<br>
<br>
</div>El 28 de noviembre de 2012 13:05, Marcuzzi, Javier Rubén <<br>
<a href="mailto:javier.ruben.marcuzzi@gmail.com" target="_blank">javier.ruben.marcuzzi@gmail.com</a>> escribió:<br>
<div><br>
>   Estimado Pablo<br>
><br>
> Entonces su problema tiene algo parecido a algo que me paso, en esta<br>
> lista, había que buscarlo, me pasaron varias posibilidades de trabajo, en<br>
> mi caso eran días, pero en R la unidad de tiempo se cuenta a partir de una<br>
> fecha fija y creo que en segundos, en mi caso varias alternativas fallaron,<br>
> o daban resultados que al leerlos estaban bien, pero como yo conocía el<br>
> valor real, encontré algunos errores de R, ni idea el porqué (incluso<br>
> copiado de libro), pero la solución en mi caso es striptime(), r-project se<br>
> actualizó, mejoro, etc., pero una vez que tengo un código qua anda prefiero<br>
> no tocarlo.<br>
><br>
> Le recomiendo que pruebe con pocos datos, según su versión de R, sistema<br>
> operativo, datos, etc. No confíe en los resultados hasta leer varios<br>
> originales, algún cálculo mental o con lápiz, y si está acorde continuar,<br>
> el trabajo con fechas por ahí da trabajo, aunque si todo anda bien es<br>
> rapidísimo.<br>
><br>
> El resto, intente la ayuda de Daniel, si se presentan inconvenientes entre<br>
> todos buscaremos alguna forma, pero sería recomendable intercambiar códigos<br>
> de R para ser precisos.<br>
><br>
> Javier Marcuzzi<br>
><br>
</div></div></div>>  *From:* Pablo Andres Guzzi <<a href="mailto:guzzipa@gmail.com" target="_blank">guzzipa@gmail.com</a>><br>
> *Sent:* Wednesday, November 28, 2012 12:05 PM<br>
> *To:* javier.ruben.marcuzzi <<a href="mailto:javier.ruben.marcuzzi@gmail.com" target="_blank">javier.ruben.marcuzzi@gmail.com</a>> ; daniel319<<a href="mailto:daniel319@gmail.com" target="_blank">daniel319@gmail.com</a>><br>





> *Cc:* r-help-es <<a href="mailto:r-help-es@r-project.org" target="_blank">r-help-es@r-project.org</a>><br>
> *Subject:* Re: [R-es] Hola, soy Pablo.<br>
<div><div><div>><br>
> Daniel, ya me pongo a investigar el paquete zoo y mas precisamente el<br>
> comando rollappl.<br>
><br>
> Javier, Necesito los movimientos de los ultimos 60 minutos segun la fecha<br>
> de la transaccion. Si la transaccion tiene fecha de realizacion 28/11/2012<br>
> a las 12:00:00 necesito que la variable en cuestion cuente las trx<br>
> realizadas desde las 11:00:00 hasta las 12:00:00 del 28/11/2012<br>
><br>
><br>
><br>
> Abrazo<br>
><br>
> Pablo A. Guzzi<br>
> <a href="mailto:guzzipa@gmail.com" target="_blank">guzzipa@gmail.com</a><br>
><br>
><br>
><br>
><br>
> El 28 de noviembre de 2012 11:18, Usuario R <<a href="mailto:r.user.spain@gmail.com" target="_blank">r.user.spain@gmail.com</a>>escribió:<br>
><br>
>> Hola Pablo,<br>
>><br>
>> Soy Patricia la administradora de la lista. Bienvenido y muchas gracias<br>
>> por tu email.<br>
>><br>
>> Quería también hacerte una pregunta, estas buscando trabajo? Yo soy<br>
>> también licenciada en estadística y vivo en Berlin. Me mandan muchisimas<br>
>> ofertas de trabajo y te podría pasar algunas, si estas interesado. Todas<br>
>> las ofertas son para Alemania, sobretodo Berlin.<br>
>><br>
>> Bueno, espero que la lista te ayude con tus dudas, un abrazo.<br>
>><br>
>> Patricia<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> El 28 de noviembre de 2012 15:04, Pablo Andres Guzzi <<a href="mailto:guzzipa@gmail.com" target="_blank">guzzipa@gmail.com</a>>escribió:<br>
>><br>
>>> Pablo A. Guzzi<br>
>><br>
>><br>
>><br>
>><br>
>> --<br>
>> Patricia García González<br>
>><br>
>><br>
>><br>
><br>
<br></div>
        [[alternative HTML version deleted]]<br>
<br>
</div></div><div><br>_______________________________________________<br>
R-help-es mailing list<br>
<a href="mailto:R-help-es@r-project.org" target="_blank">R-help-es@r-project.org</a><br>
<a href="https://stat.ethz.ch/mailman/listinfo/r-help-es" target="_blank">https://stat.ethz.ch/mailman/listinfo/r-help-es</a><br>
<br></div></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><span style="font-family:verdana,sans-serif">Saludos,</span><br style="font-family:verdana,sans-serif">
<span style="font-family:verdana,sans-serif">Carlos Ortega</span><br style="font-family:verdana,sans-serif">
<span style="font-family:verdana,sans-serif"><a href="http://www.qualityexcellence.es" target="_blank">www.qualityexcellence.es</a></span><br>
</font></span></div>
</blockquote></div></div></div><br></div>
</blockquote></div></div></div><div><div class="h5"><br><br clear="all"><div><br></div>-- <br><span style="font-family:verdana,sans-serif">Saludos,</span><br style="font-family:verdana,sans-serif">
<span style="font-family:verdana,sans-serif">Carlos Ortega</span><br style="font-family:verdana,sans-serif">
<span style="font-family:verdana,sans-serif"><a href="http://www.qualityexcellence.es" target="_blank">www.qualityexcellence.es</a></span><br>
</div></div></div>
</blockquote></div><br></div>