Hola,
yo lo haría así. Utilizo el paquete "dplyr". Utiliza install.packages("dplyr") si no tienes instalado este paquete.
Considero que se trata del mismo animal si tiene las variables animal, sexo, padre y madre iguales (es lo que selecciono con group_by).
library(dplyr)
data <- data.frame(animal=c(301, 301, 301), sexo=c("M","M","M"), padre=c(51,51,87),
madre=c(32,32,54), peso1=c(30,NA,45), peso2=c(NA, 170, NA), peso3=c(250,NA ,189) )
group_by(data, animal, sexo, padre, madre) %.% summarize(peso1=max(peso1, na.rm = TRUE), peso2=min(peso2, na.rm=TRUE), peso3=min(peso3, na.rm=TRUE))
Un saludo,
Franz