id <- c(1:8,1:8)
age1 <- c(7.5,6.7,8.6,9.5,8.7,6.3,9,5)
age2 <- age1 + round(runif(1,1,3),1)
age <- c(age1, age2)
tanner <- sample(1:2, 16,replace=T)
d
aggregate
then reshape
(using a copied and pasted version of your df
rather than your code, that doesn't match):
reshape(
aggregate(age ~ ., data=df, FUN=min),
idvar="id", timevar="tanner", direction="wide"
)
# id age.1 age.2
#1 1 10.0 7.5
#2 2 6.7 NA
#3 3 11.1 8.6
#4 5 8.7 11.2
#5 6 6.3 8.8
#6 7 9.0 NA
#7 8 5.0 NA
#10 4 NA 9.5