[R] selecting rows by maximum value of one variables in dataframe nested by another Variable
Rui Barradas
ruipbarradas at sapo.pt
Wed Jun 27 12:09:59 CEST 2012
Hello,
Here's a solution using aggregate and merge. I've kept it in two steps
for clarity.
d <- read.table(text="
subject time.ms V3
1 1 stringA
1 12 stringB
1 22 stringC
2 1 stringB
2 14 stringC
2 25 stringA
", header=TRUE)
ag <- aggregate(time.ms~subject, data=d, max)
merge(ag, d)
# It also works if the maximum is not unique
d2 <- rbind(d, c(1, 22, "stringA"))
ag2 <- aggregate(time.ms~subject, data=d2, max)
merge(ag2, d2)
The split version would have to be slightly modified, to make use of
'which' and 'max' separately.
do.call("rbind",lapply(split(d2, d2$subject), function(x)
x[which(x[, 2] == max(x[, 2])), ]))
Hope this helps,
Rui Barradas
Em 27-06-2012 09:30, Petr PIKAL escreveu:
> Hi
>>
>> How could I select the rows of a dataset that have the maximum value in
>> one variable and to do this nested in another variable. It is a
> dataframe
>> in long format with repeated measures per subject.
>> I was not successful using aggregate, because one of the columns has
>
> You could do it by aggregate and subsequent selection matching values from
> your data frame but it is perfect example for powerfull list operations
>
>> do.call("rbind",lapply(split(test, test$subject), function(x)
> x[which.max(x[,2]),]))
> subject time.ms V3
> 1 1 22 stringC
> 2 2 25 stringA
>>
>
> split splits data frame test according to subject variable into list of
> sub data frames
> function x computes which is maximum value in second column in each sub
> data frame and selects the appropriate row
> do.call takes the list and rbinds it to one final data frame.
>
> Regards
> Petr
>
>> character values (and/or possibly because of another reason).
>> I would like to transfer something like this:
>> subject time.ms V3
>> 1 1 stringA
>> 1 12 stringB
>> 1 22 stringC
>> 2 1 stringB
>> 2 14 stringC
>> 2 25 stringA
>> ….
>> To something like this:
>> subject time.ms V3
>> 1 22 stringC
>> 2 25 stringA
>> …
>>
>> Thank you very much for you help!
>> Miriam
>> --
>>
>> Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list