This might an easy one. Here\'s the data:
dat <- read.table(header=TRUE, text=\" Seg ID Distance Seg46 V21 160.37672 Seg72 V85 191.24400 Seg37
If you prefer ddply you could do this
ddply
library(plyr) ddply(dat, .(ID), summarize, Seg = Seg[which.min(Distance)], Distance = min(Distance)) # ID Seg Distance #1 V147 Seg159 14.74852 #2 V171 Seg233 193.01636 #3 V21 Seg46 160.37672 #4 V85 Seg373 167.38930