[R-es] Hola, soy Pablo.

Pablo Andres Guzzi guzzipa en gmail.com
Jue Nov 29 19:49:14 CET 2012


intente hacerlo andar pero hay algo que estoy omitiendo evidentemente

(adjunto csv)

######################################
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)

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)
}

######################################

Abrazo

Pablo A. Guzzi
guzzipa en gmail.com




El 29 de noviembre de 2012 15:30, Carlos Ortega
<cof en qualityexcellence.es>escribió:

> 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 en 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 en gmail.com
>>
>>
>>
>>
>> El 29 de noviembre de 2012 12:16, Carlos Ortega <cof en 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 en 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 en gmail.com
>>>>
>>>>
>>>>
>>>>
>>>> El 28 de noviembre de 2012 13:05, Marcuzzi, Javier Rubén <
>>>> javier.ruben.marcuzzi en 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 en gmail.com>
>>>> > *Sent:* Wednesday, November 28, 2012 12:05 PM
>>>> > *To:* javier.ruben.marcuzzi <javier.ruben.marcuzzi en gmail.com> ;
>>>> daniel319<daniel319 en gmail.com>
>>>> > *Cc:* r-help-es <r-help-es en 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 en gmail.com
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > El 28 de noviembre de 2012 11:18, Usuario R <r.user.spain en 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 en gmail.com>escribió:
>>>> >>
>>>> >>> Pablo A. Guzzi
>>>> >>
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Patricia García González
>>>> >>
>>>> >>
>>>> >>
>>>> >
>>>>
>>>>         [[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
>>>>
>>>>
>>>
>>>
>>> --
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20121129/f45ca283/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: datos.csv
Type: text/csv
Size: 500 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20121129/f45ca283/attachment-0001.bin>


Más información sobre la lista de distribución R-help-es