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]]
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]]
Par evitar el warning....> DT=data.table(col1=1:10) > DT[,col2:=diff(log(c(1,col1)))] > DTcol1 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
Par evitar el warning....> DT=data.table(col1=1:10) > DT[,col2:=diff(log(c(1,col1)))] > DTcol1 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