Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Sample data
- # Anim = 1:16 # Can be alphanumeric too
- # Sire = c(6,6,8,8,0,10,0,13,0,14,14,0,15,0,0,0) # Can be alphanumeric too
- # Dam = c(5,5,7,9,0,11,12,0,0,0,0,0,16,0,0,0) # Can be alphanumeric too
- # ped = data.frame(anim=Anim, sire=Sire, dam=Dam)
- colnames(ped) = c("anim","sire","dam")
- ped = data.frame(lapply(ped, as.character), stringsAsFactors=FALSE)
- ped.old = ped
- gen = 0
- animgen = data.frame()
- while(nrow(ped) > 0)
- {
- tmp = ped[!ped$anim %in% ped$sire & !ped$anim %in% ped$dam,]$anim
- print(paste(length(tmp), 'animals in generation', gen))
- animgen = rbind(animgen, data.frame(anim = tmp, generation = gen))
- ped = ped[!ped$anim %in% tmp,]
- gen = gen - 1
- }
- animgen = animgen[order(animgen$gen, animgen$anim),]
- animgen$newID = 1:nrow(animgen)
- ped.new = ped.old
- for(i in 1:nrow(animgen)) ped.new[ped.new==as.character(animgen$anim[i])] = paste0("_", animgen$newID[i])
- ped.new$anim = as.integer(sub("_", "", ped.new$anim))
- ped.new$sire = as.integer(sub("_", "", ped.new$sire))
- ped.new$dam = as.integer(sub("_", "", ped.new$dam))
- print('ped.old is the old pedigree, and ped.new is the new pedigree.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement