[R-es] Manera eficiente de añadir el valor anterior por grupo

Jesús Para Fernández j.para.fernandez en hotmail.com
Jue Nov 16 11:33:42 CET 2017


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]]



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