R 查找每个组中的最大值和最小值

R 查找每个组中的最大值和最小值,r,R,我想在下表中找到每个基因的最大值和最小值。 我知道,下面的函数给出了最大值(或最小值),但我无法同时获得这两个值 tapply(df$Value, df$Gene, max) 谢谢 小型测试集: df <- read.table(header = TRUE, text = 'Gene Value A 12 A 10 A 123 A 1

我想在下表中找到每个基因的最大值和最小值。 我知道,下面的函数给出了最大值(或最小值),但我无法同时获得这两个值

tapply(df$Value, df$Gene, max)
谢谢

小型测试集:

df <- read.table(header = TRUE, text = 'Gene   Value
A      12
                 A      10
                 A      123
                 A      1
                 B      3
                 B      5
                 B      6
                 C      1
                 D      3
                 D      45
                 D      98
                 D      234
                 D      4')
df
返回最大值和最小值的函数

您可以这样做:

tapply(df$Value, df$Gene, range)

# $A
# [1]   1 123

# $B
# [1] 3 6

# $C
# [1] 1 1

# $D
# [1]   3 234

您可以继续使用
tapply
,只需修改
FUN
参数即可返回多个摘要统计信息。例如:

do.call(rbind, tapply(df$Value, df$Gene, FUN = function(x) c(max = max(x), min = min(x))))
#  max min
#A 123   1
#B   6   3
#C   1   1
#D 234   3
尝试
库(dplyr);df%>%groupby(Gene)%%>%summary(Min=Min(Value),Max=Max(Value))
range(x)
返回一个两元素向量,其最小值和最大值为
x
tapply(df$Value,df$Gene,FUN=function(x)c(Max=Max(x),Min=Min(x))
聚合(Value~Gene,data=df,FUN=range)
do.call(rbind, tapply(df$Value, df$Gene, FUN = function(x) c(max = max(x), min = min(x))))
#  max min
#A 123   1
#B   6   3
#C   1   1
#D 234   3