[R-es] Corregir mismo ID para individuos diferentes en una serie temporal

Fernando Macedo fermace en gmail.com
Mar Ene 26 16:07:29 CET 2016


Buenas, si tienes la fecha de nacimiento una salida sencilla para salir 
del paso es concatenar el ID con el año de nacimiento.

Saludos

Fernando Macedo

El 25/01/16 a las 14:11, Ruben Bermad escribió:
> Hola a todos,
> Quer�a preguntar si alguno sabe como puedo identificar registros con un mismo ID en el tiempo, pero que hacer referencia a objetos o individuos diferentes.
> En mi caso en particular estoy estudiando un animal que tiene una vida media cercana 2 a�os, y tengo una serie longitudinal de 25 a�os. El problema es que durante el muestreo en algunos casos durante la recoleccion de los datos, se repitieron los nombres de los individuos porque se asumen que si ha pasado 10 a�os no puede ser el mismo individuo. Y el problema que yo tengo es que no se como detectar de manera autom�tica este tipo de errores.
> Hab�a pensado era en registrar la primera aparici�n de cada nombre (e.g indiv_1, y ver el tiempo que ha pasado en comparaci�n con el resto de registros para ese mismo individuo, y en el caso que fuera superior (por ejemplo a 36 meses para estar totalmente seguros), que ese individuo que hab�a sido registrado como "indiv_1" sea renombrado (e.g. indiv_150), y cambiar todos los siguientes registros de indiv_1 a indiv_150.
> Esto parece sencillo, pero lo complicado al revisar todos los casos nombrados ahora como indiv_150 ya que es posible que el nombre indiv_1 haya sido usado para varios individuos diferentes a lo largo de la serie (e.g. en el a�o 1, 10 y 20). Entonces lo que hab�a pensado es hacer un bucle para cada individuo, pero no consigo que cada vez que cambia el nombre de un individuo (e.g. en el a�o 10) capture la nueva fecha para determinar si los siguientes nombres hacen referencia al mismo individuo u a otro muy posterior en el tiempo (e.g. a�o 20).
> Esta pregunta la pregunte hace tiempo en stackoverflowhttp://stackoverflow.com/questions/32310520/identify-objects-with-repeated-measures-and-with-the-same-id-between-years, pero no obtuve una respuesta que solucionara el problema, y los posteriores intentos que he estado haciendo tampoco han sido muy buenos que se digan (os lo copio al final del mensaje).
> Por ello os quer�a preguntar si alguno sabe como puedo ir registrando y cambiando los IDs a lo largo del tiempo.
> Muchas gracias por adelantado, Un cordial saludo, Rub�n
> Codigo usadodatabase es la base de datos con la serie temporalID_original es el identificado original que tiene cada individuoMonth_Capt es la variable que me indica en que momento fue capturado cada individuo y por tanto si es posible o no que el individuo sea el mismo a lo largo del tiempo.
> newID <-sapply(unique(database$ID_original), function(x) c(0,cumsum(diff(database$Month_Capt[database$ID_original==x]))%%48))names(newID)<-(unique(database$ID_original))
> new_df<-data.frame(database$ID_original,database$Month_Capt,IDcond=NA,new_ID=NA)for(i in unique(database$ID_original)){  new_df[new_df[,1]==i,3]<-newID[[which(unique(database$ID_original)==i)]]}ltrs<-c(LETTERS,apply(combn(LETTERS,2,simplify = T),2,function(x) paste(x,sep = "",collapse = "")))
> letterwrap <- function(n, depth = 1) {  args <- lapply(1:depth, FUN = function(x) return(LETTERS))  x <- do.call(expand.grid, args = list(args, stringsAsFactors = F))  x <- x[, rev(names(x)), drop = F]  x <- do.call(paste0, x)  if (n <= length(x)) return(x[1:n])  return(c(x, letterwrap(n - length(x), depth = depth + 1)))}
> ltrs <- letterwrap(nrow(database)) # Create as many letters as unique IDs
>
> ltrn<-0for(i in 1:nrow(new_df)){  if(new_df[i,3]==0) {ltrn<-ltrn+1;new_df[i,4]<-ltrs[ltrn]}  else {ind<-which(new_df[,1]==new_df[i,1])        ind<-ind[ind<i]        new_df[i,4]<-tail(new_df[ind,4],1)}}
>   		 	   		
> 	[[alternative HTML version deleted]]
>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es


	[[alternative HTML version deleted]]



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