[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