[R] Pedigree / Identifying Immediate Family of Index Animal

Terry Therneau therneau at mayo.edu
Fri Mar 19 16:54:13 CET 2010

On Thu, 18 Mar 2010, Ben Bimber wrote:

> I have a data frame containing the Id, Mother, Father and Sex from
> 10,000 animals in our colony.  I am interested in graphing simple
> trees for a given subject or small number of subjects.  The basic idea
> start with data frame from entire colony and list of index animals.  I
> to identify all immediate relatives of these index animals and plot
> pedigree for them.  We're not trying to do any sort of real analysis,
> present a visualization of the family structure.  I have used the
> and pedigree packages to plot the pedigree.  My question relates to
> efficiently identifying the animals to include in the pedigree:

 Your basic idea is sound -- the drawing programs do the same type of
thing and it is very fast.  Your loop is only over 3 generations.  My
version of the function interleaves the up/down steps.
   	Terry Therneau
findKin <- function(id, dadid, momid, index, generations=3) {
    idrow <- match(index, id)
    if (any(is.na(idrow))) stop("Index subject not found")

    for (i in 1:generations) {
        # add parents
        idrow <- c(idrow, match(momid[idrow], id, nomatch=0),
                          match(dadid[idrow], id, nomatch=0))
        idrow <- unique(idrow[idrow>0])  # toss the zeros
        # add children
        idrow <- c(idrow, which(match(momid, id[idrow], nomatch=0) >0),
                          which(match(dadid, id[idrow], nomatch=0) >0))
        idrow <- unique(idrow[idrow>0])

More information about the R-help mailing list