Muchas gracias a todos, copio y pego el código R con la solución que adopte para
que quede de archivo por si alguien lo necesita.
No se si es la mejor solución, pero es la primera que probé y para mis
requerimientos funciono.
Javier Marcuzzi
#######################################################33
# Descricion de los datos (en orden de columnas)
# 5 Personas que realizan una actividad,
# por cada vez que se realiza la actividad se la numera
# cada actividad numerada es realizada a x dias desde
# la columna dias2 es generada para no tener blancos (vacíos)
persona<-c(1,1,1,1,1,2,2,2,2,2,3,3,3,4,5,5)
numeracion <-c(1,2,3,4,5,1,2,3,4,5,1,2,3,1,1,2)
dias <-c(1,3,4,6,9,2,4,6,7,9,2,5,8,3,5,8)
dias2 <- c(1:length(dias))
datos <- data.frame(persona, numeracion, dias, dias2)
datos
# Modificación:
# agrego (a mano) como debería tener el resultado
# el valor maximo para cada persona vale NA
# elimino el primer valor y todos se correrían una posición
# datos$dias2[datos$dias2 < max(datos$dias2)] <- datos$dias2[-1]
# datos$dias2[datos$dias2 == max(datos$dias2)] <- NA
# quedaría de esta forma (con lo que no logre de mi parte)
datos_a_mano<-c(3,4,6, 9,NA,4,6,7,9,NA, 5, 8,NA, 3,8, NA )
datos_a_mano_df <-data.frame(persona, numeracion, dias, dias2, datos_a_mano)
datos_a_mano_df
#entonces podría calcular la diferencia de tiempo como
# (los días2 fueron secuencia, porque arriba le escribo)
datos_a_mano-datos$dias
# descripción de lo que debería realizar
# observar la columna dias2
# cambia el primer valor y los ultimos (15 y 16)
datos$dias2[datos$dias2 < max(datos$dias2)] <- datos$dias2[-1]
datos$dias2[datos$dias2 == max(datos$dias2)] <- NA
datos
############################## Respuesta de Jorge
#
#
# Solucuón a mi problema
#
##########################################################
res <- with(datos, tapply(dias, persona, function(x){
if(length(x) > 1) res <- c(x[-1], NA) # borrar la primera observacion y
hacer la ultima NA
else res <- x # que hacer cuando hay una sola observacion
res
}))
datos$loquenecesitabas <- do.call(c, res)
datos
# Muchas gracias por los aportes de todos
[[alternative HTML version deleted]]