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 > [email protected] > https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
