Hay una función shift
en taRifx que funciona en vectores. Al aplicarlo, se obtiene la cohesión de todas las columnas del personaje, si es que hay personaje, así que usaremos un truco de plyr. probablemente voy a escribir un método para hoja.de.datos pronto:
dd <- data.frame(b = seq(4),
x = c("A", "D", "A", "C"), y = c('a','b','c','d'),
z = c(1, 1, 1, 2),stringsAsFactors=FALSE)
> dd
b x y z
1 1 A a 1
2 2 D b 1
3 3 A c 1
4 4 C d 2
library(taRifx)
library(plyr)
shift.data.frame <- colwise(shift)
> shift.data.frame(dd)
b x y z
1 2 D b 1
2 3 A c 1
3 4 C d 2
4 1 A a 1
> shift(dd,n=-1)
b x y z
1 4 C d 2
2 1 A a 1
3 2 D b 1
4 3 A c 1
> shift(dd,n=-1,wrap=FALSE)
b x y z
1 1 A a 1
2 2 D b 1
3 3 A c 1
> shift(dd,n=-1,wrap=FALSE,pad=TRUE)
b x y z
1 NA <NA> <NA> NA
2 1 A a 1
3 2 D b 1
4 3 A c 1
La ventaja de shift
es que se necesita un montón de opciones:
- n puede ser positivo o negativo para envolver de izquierda a derecha/derecha
- envoltura se pueden activar o desactivar
- Si envoltura está apagado, la almohadilla se puede activar a almohadilla con AN tan vector sigue siendo la misma longitud
@Prasad Chalasani: me lo puede explicar por favor en detalles – smack
@smack - puede obtener ayuda sobre estas funciones escribiendo '? rbind','? head' y '? tail' en la consola R En resumen, 'head (d, -k)' devuelve * todas menos las últimas filas 'k' * del marco de datos' d'; 'tail (d, k)' devuelve las últimas filas 'k'; 'rbind (d1, d2)' "row-binds" dos marcos de datos 'd1, d2', es decir, crea un marco de datos con' d1' en la parte superior, luego 'd2'. –