Let\'s say I have four samples: id=1, 2, 3, and 4, with one or more measurements on each of those samples:
> a <- data.frame(id=c(1,1,2,2,3,4), value=c
Another approach (though the code might look a little cumbersome) is to use ave():
ave()
a[which(abs(a$value) == ave(a$value, a$id, FUN=function(x) max(abs(x)))), ] # id value # 2 1 2 # 4 2 -4 # 5 3 -5 # 6 4 6