Remove duplicates keeping entry with largest absolute value
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(1,2,3,-4,-5,6)) > a id value 1 1 1 2 1 2 3 2 3 4 2 -4 5 3 -5 6 4 6 I want to remove duplicates, keeping only one entry per ID - the one having the largest absolute value of the "value" column. I.e., this is what I want: > a[c(2,4,5,6), ] id value 2 1 2 4 2 -4 5 3 -5 6 4 6 How might I do this in R? aa <- a[order(a$id, -abs(a$value) ), ] #sort by id and reverse of abs(value) aa[ !duplicated(aa$id), ] # take the first row within each id id value 2