Extraiga el valor máximo dentro de cada grupo en un dataframe

Tengo un dataframe con una variable de agrupamiento (“Gene”) y una variable de valor (“Valor”):

Gene Value A 12 A 10 B 3 B 5 B 6 C 1 D 3 D 4 

Para cada nivel de mi variable de agrupación, deseo extraer el valor máximo. El resultado debería ser, por lo tanto, un dataframe con una fila por nivel de la variable de agrupación:

 Gene Value A 12 B 6 C 1 D 4 

Podría aggregate hacer el truco?

Hay muchas posibilidades para hacer esto en R. Aquí están algunos de ellos:

 df < - read.table(header = TRUE, text = 'Gene Value A 12 A 10 B 3 B 5 B 6 C 1 D 3 D 4') # aggregate aggregate(df$Value, by = list(df$Gene), max) aggregate(Value ~ Gene, data = df, max) # tapply tapply(df$Value, df$Gene, max) # split + lapply lapply(split(df, df$Gene), function(y) max(y$Value)) # plyr require(plyr) ddply(df, .(Gene), summarise, Value = max(Value)) # dplyr require(dplyr) df %>% group_by(Gene) %>% summarise(Value = max(Value)) # data.table require(data.table) dt < - data.table(df) dt[ , max(Value), by = Gene] # doBy require(doBy) summaryBy(Value~Gene, data = df, FUN = max) # sqldf require(sqldf) sqldf("select Gene, max(Value) as Value from df group by Gene", drv = 'SQLite') # ave df[as.logical(ave(df$Value, df$Gene, FUN = function(x) x == max(x))),] 

Usar sqldf y sql estándar para obtener los valores máximos agrupados por otra variable

https://cran.r-project.org/web/packages/sqldf/sqldf.pdf

 library(sqldf) sqldf("select max(Value),Gene from df1 group by Gene") 

o

Uso del excelente paquete Hmisc para una aplicación de función group (max) https://www.rdocumentation.org/packages/Hmisc/versions/4.0-3/topics/summarize

 library(Hmisc) summarize(df1$Value,df1$Gene,max) 
 df$Gene < - as.factor(df$Gene) do.call(rbind, lapply(split(df,df$Gene), function(x) {return(x[which.max(x$Value),])})) 

Solo usando la base R