gpt4 book ai didi

r - 提取数据框中每组内的最大值

转载 作者:行者123 更新时间:2023-12-01 19:35:51 27 4
gpt4 key购买 nike

我有一个带有分组变量(“Gene”)和值变量(“Value”)的数据框:

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

对于分组变量的每个级别,我希望提取最大值。因此,结果应该是一个数据框,分组变量的每个级别一行:

Gene   Value
A 12
B 6
C 1
D 4

可以aggregate做这个伎俩吗?

最佳答案

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

关于r - 提取数据框中每组内的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com