varias superponer studio recortar que presentacion mapas mapa graficos graficas definicion data r aggregate r-faq

studio - superponer graficas en r



Extraiga el valor máximo dentro de cada grupo en un marco de datos (3)

Esta pregunta ya tiene una respuesta aquí:

Tengo un marco de datos 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 marco de datos 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))),]



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