[R] Aggregate by minimum

Hadley Wickham hadley at rice.edu
Tue Jan 10 23:55:10 CET 2012


On Mon, Jan 9, 2012 at 8:00 PM, jim holtman <jholtman at gmail.com> wrote:
> try this:
>
>> x <- structure(list(speed = c(3,9,14,8,7,6), result = c(0.697, 0.011, 0.015, 0.012, 0.018, 0.019), house = c(1,
> + 1, 1, 1, 1, 1), date = c(719, 1027, 1027, 1027, 1030, 1030),
> +    id = c("1000", "10000",
> +    "10001", "10002", "10003", "10004")), .Names = c("speed",
> + "result", "house", "date", "id"), class = "data.frame", row.names = c("1000",
> + "10000", "10001", "10002", "10003", "10004"))
>>
>> require(plyr)
>> ddply(x, .(date), .fun = function(a){
> +     a[which.min(a$speed), ]
> + })

Or even more succinctly:

ddply(x, .(date), subset, speed == min(speed))

Hadley


-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/



More information about the R-help mailing list