Hola,

Esta es una forma:

> library(data.table)> datos<-data.table(grupo=rep(c("a","b"), 
> each=5),x=c(1:10),y=rnorm(10,2,1))> > new_datos <- datos[, 
> .SD[1:(.N+1)],by=grupo]> # datos[, new_y:= shift(y,1), by=grupo]> > 
> new_datos[, new_x := shift(y,1), by=grupo]> new_datos[, x:= ifelse(is.na(x), 
> 0L, x ), by=grupo]> new_datos$x <- as.double(new_datos$x)> > new_datos[ ,x:= 
> ifelse(x == 0, new_x, x), by=grupo]> new_datos$new_x <- NULL> new_datos    
> grupo          x         y
 1:     a  1.0000000 2.2626549
 2:     a  2.0000000 1.4232653
 3:     a  3.0000000 1.4361233
 4:     a  4.0000000 1.5171921
 5:     a  5.0000000 1.2444494
 6:     a  1.2444494        NA
 7:     b  6.0000000 2.1755191
 8:     b  7.0000000 3.7519007
 9:     b  8.0000000 3.5258307
10:     b  9.0000000 2.8897186
11:     b 10.0000000 0.9801489
12:     b  0.9801489        NA


He tenido que hacer varias operaciones con las que no contaba, debido al
tipo de la columna "x".

Saludos,
Carlos Ortega
www.qualityexcellence.es



El 16 de noviembre de 2017, 11:33, Jesús Para Fernández <
j.para.fernan...@hotmail.com> escribió:

> Buenas
>
> Tengo un Data table de la siguiente manera:
>
>
> datos<-data.table(grupo=rep(c("a","b"),5),x=c(1:10),y=rnorm(10,2,1))
>
>
> Lo que quiero es añadir una fila por cada grupo y en esa nueva fila, al
> valor de la x ponerle el valor anterior de la y
>
> Lo que hago es añadir una nueva fila por grupo, con:
> datos[,.SD[1:(.N+1)],by=grupo]
>
> Y para añadir el valor anterior uso la función shift, pero lo estoy
> haciendo sacando en que filas de las x hay NA y cogiendo el valor anterior,
> pero todo casero.
>
> ¿HAy algguna manera eficiente de hacerlo en data.table?
>
> He probado con:
> datos[is.na(y),x:=shift(y,1),by=grupo]
>
> Pero no funciona.
>
> Gracias!
> Jesús
>
>         [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@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@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a