为了账号安全,请及时绑定邮箱和手机立即绑定

在dataframe中提取每个组内的最大值

在dataframe中提取每个组内的最大值

元芳怎么了 2019-06-20 10:19:58
在dataframe中提取每个组内的最大值我有一个具有分组变量(“Gene”)和一个值变量(“value”)的数据框架:Gene   Value A      12A      10B      3B      5B      6C      1D      3D      4对于分组变量的每个级别,我希望提取最大值。因此,结果应该是一个数据帧,每级分组变量有一行:Gene   Value A      12B      6C      1D      4能aggregate玩这个把戏?
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

在R中有很多这样做的可能性,以下是其中的一些:


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))),]


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 3463 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信