饮歌长啸
在R中有很多这样做的可能性,以下是其中的一些:df <- read.table(header = TRUE, text = 'Gene ValueA 12A 10B 3B 5B 6C 1D 3D 4')# aggregateaggregate(df$Value, by = list(df$Gene), max)aggregate(Value ~ Gene, data = df, max)# tapplytapply(df$Value, df$Gene, max)# split + lapplylapply(split(df, df$Gene), function(y) max(y$Value))# plyrrequire(plyr)ddply(df, .(Gene), summarise, Value = max(Value))# dplyrrequire(dplyr)df %>% group_by(Gene) %>% summarise(Value = max(Value))# data.tablerequire(data.table)dt <- data.table(df)dt[ , max(Value), by = Gene]# doByrequire(doBy)summaryBy(Value~Gene, data = df, FUN = max)# sqldfrequire(sqldf)sqldf("select Gene, max(Value) as Value from df group by Gene", drv = 'SQLite')# avedf[as.logical(ave(df$Value, df$Gene, FUN = function(x) x == max(x))),]