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

Olivier Nuñez onunez en unex.es
Jue Mar 12 12:53:37 CET 2015


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



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