我想在下表中找到每个Gene的最大值和最小值。 我知道,以下函数给出了最大值(或最小值),但我无法同时获得两者。
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')
答案 0 :(得分:1)
range()
是返回最大值和最小值的函数
你要这样做:
tapply(df$Value, df$Gene, range)
# $A
# [1] 1 123
# $B
# [1] 3 6
# $C
# [1] 1 1
# $D
# [1] 3 234
答案 1 :(得分:0)
您可以继续使用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