[R-es] como hacer una operacion con data.table

Carlos Ortega cof en qualityexcellence.es
Sab Mar 14 00:38:14 CET 2015


Hola,

Lo que haces son varias cosas:

   - así es añadir un "1" al conjunto como primer elemento.
   - Y el ciclo de diferencias "diff()" le aplicas a todas las filas, no
   como antes empezando en la segunda fila.

De esta forma cuando haces la diferencias de logaritmos lo que haces es
calcular: log(1) - log(1) y aparece el cero inicial.

Si no lo haces, como puse yo, al empezar el ciclo en el segundo elemento,
el primero queda sin definir y por eso aparece un NA y el mensaje de aviso.

Saludos,
Carlos.

El 13 de marzo de 2015, 23:59, Eric <ericconchamunoz en gmail.com> escribió:

> Hola Olivier, podrias explicarme como los argumentos que pones dentro
> de diff() evitan que se genere el NA de la primera celda de col2, por
> favor ... quisiera aplicarlo a otra situacion pero no entiendo bien
> como funciona.
>
> Muchas gracias,
>
> Eric.
>
>
>
>
>
>
>
> On 3/12/15, Olivier Nuñez <onunez en unex.es> wrote:
> > Par evitar el warning....
> >
> >> DT=data.table(col1=1:10)
> >> DT[,col2:=diff(log(c(1,col1)))]
> >> DT
> >     col1      col2
> >  1:    1 0.0000000
> >  2:    2 0.6931472
> >  3:    3 0.4054651
> >  4:    4 0.2876821
> >  5:    5 0.2231436
> >  6:    6 0.1823216
> >  7:    7 0.1541507
> >  8:    8 0.1335314
> >  9:    9 0.1177830
> > 10:   10 0.1053605
> >>
> >
> >
> > ----- Mensaje original -----
> > De: "Carlos Ortega" <cof en qualityexcellence.es>
> > Para: "Eric" <ericconchamunoz en gmail.com>
> > CC: r-help-es en r-project.org
> > Enviados: Miércoles, 11 de Marzo 2015 15:19:07
> > Asunto: Re: [R-es] como hacer una operacion con data.table
> >
> > Hola,
> >
> > Así sería una forma...
> >
> > #----------------
> >> library(data.table)
> >> DT <- data.table(x=seq(1:20))
> >> DT[ 2:nrow(DT), col2 := diff(log(x)) ]
> > Mensajes de aviso perdidos
> > In `[.data.table`(DT, 2:nrow(DT), `:=`(col2, diff(log(x)))) :
> >   Supplied 18 items to be assigned to 19 items of column 'col2' (recycled
> > leaving remainder of 1 items).
> >> head(DT)
> >    x      col2
> > 1: 1        NA
> > 2: 2 0.4054651
> > 3: 3 0.2876821
> > 4: 4 0.2231436
> > 5: 5 0.1823216
> > 6: 6 0.1541507
> >> log(2) - log(1)
> > [1] 0.6931472
> >> log(3) - log(2)
> > [1] 0.4054651
> >
> > #----------------
> >
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
> > El 10 de marzo de 2015, 23:48, Eric <ericconchamunoz en gmail.com>
> escribió:
> >
> >> estimados, siempre habia usado data.frame, pero estoy tratando de
> >> aprender
> >> a usar data.table porque normalmente tengo que manejar una buena
> cantidad
> >> de datos
> >>
> >> ahora necesito hacer un calculo simple, para el que antes usaba ciclos
> >> FOR,
> >> pero quiero aprovechar las ventajas de data.table
> >>
> >> mi preguna es como podria calcular, por ejemplo, la columna 2 de un
> >> data.table llamada DT si el valor de la primera columna es una serie de
> 1
> >> a
> >> 10, y la celda de la fila m de la segunda columna es igual al valor de
> la
> >> celda m de la primera columna menos la celda m-1 de la primera columna.
> >>
> >> me explico ??
> >>
> >> si fuera un ciclo con data.frame lo haria asi:
> >>
> >>           i <- 2
> >>           for (i in 2:nrow(DT))
> >>           {
> >>             DT[i,col2] <- log(DT[i,col1]) - log(DT[i-1,col1])
> >>             i <- i + 1
> >>           }
> >>
> >> No escribi toda la nomenclatura pero se entiende la idea, cierto ?
> >>
> >> Espero me den una mano como siempre.
> >>
> >> Muchas gracias !!!!!
> >>
> >>
> >>
> >>
> >>
> >> --
> >> Nota: las tildes se han omitido para evitar conflictos con algunos
> >> lectores
> >> de correo.
> >>
> >> Frases notables:
> >> * SATYÂT NÂSTI PARO DHARMAH (No hay religion mas elevada que la verdad)
> >> * La oscuridad no se combate, se ilumina ...
> >> * Un economista es un experto que sabrá mañana por qué las cosas que
> >> predijo
> >> ayer no han sucedido hoy (Laurence Peter).
> >>
> >>         [[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
> >
> >       [[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
> >
>
>
> --
> Nota: las tildes se han omitido para evitar conflictos con algunos lectores
> de correo.
>
> Frases notables:
> * SATYÂT NÂSTI PARO DHARMAH (No hay religion mas elevada que la verdad)
> * La oscuridad no se combate, se ilumina ...
> * Un economista es un experto que sabrá mañana por qué las cosas que
> predijo
> ayer no han sucedido hoy (Laurence Peter).
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



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