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

Eric ericconchamunoz en gmail.com
Vie Mar 13 23:59:56 CET 2015


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



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