Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. # Sample data
  2. # Anim = 1:16 # Can be alphanumeric too
  3. # Sire = c(6,6,8,8,0,10,0,13,0,14,14,0,15,0,0,0) # Can be alphanumeric too
  4. # Dam = c(5,5,7,9,0,11,12,0,0,0,0,0,16,0,0,0) # Can be alphanumeric too
  5. # ped = data.frame(anim=Anim, sire=Sire, dam=Dam)
  6.  
  7.  
  8. colnames(ped) = c("anim","sire","dam")
  9. ped = data.frame(lapply(ped, as.character), stringsAsFactors=FALSE)
  10. ped.old = ped
  11. gen = 0
  12. animgen = data.frame()
  13.  
  14. while(nrow(ped) > 0)
  15. {
  16. tmp = ped[!ped$anim %in% ped$sire & !ped$anim %in% ped$dam,]$anim
  17. print(paste(length(tmp), 'animals in generation', gen))
  18. animgen = rbind(animgen, data.frame(anim = tmp, generation = gen))
  19. ped = ped[!ped$anim %in% tmp,]
  20. gen = gen - 1
  21. }
  22.  
  23. animgen = animgen[order(animgen$gen, animgen$anim),]
  24. animgen$newID = 1:nrow(animgen)
  25. ped.new = ped.old
  26.  
  27. for(i in 1:nrow(animgen)) ped.new[ped.new==as.character(animgen$anim[i])] = paste0("_", animgen$newID[i])
  28. ped.new$anim = as.integer(sub("_", "", ped.new$anim))
  29. ped.new$sire = as.integer(sub("_", "", ped.new$sire))
  30. ped.new$dam = as.integer(sub("_", "", ped.new$dam))
  31.  
  32. print('ped.old is the old pedigree, and ped.new is the new pedigree.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement