R语言 如何计算向量'x'的平均值,同时从计算中排除最小值和最大值?

brtdzjyr  于 2023-02-14  发布在  其他
关注(0)|答案(4)|浏览(198)
x <- c(1,2,3,4,5,6)

我想求出向量x的平均值,同时排除向量中最小和最大的数,谢谢!
答案应该是3.5我试过这个和其他方法,但没有运气!

mean(g,-which.min(g),-which.max(g))
lf5gs5x2

lf5gs5x21#

可以使用range()函数返回包含x的最小值和最大值的向量。
然后子集x排除这些值,并取平均值。

mean(x[!x %in% range(x)]) # 3.5
xtfmy6hx

xtfmy6hx2#

这是内置在默认的mean函数中的。要去掉顶部和底部的值,请使用mean(x, trim = 1/length(x))。这会去掉顶部和底部的一个观测值。

db2dz4w8

db2dz4w83#

解决这个问题的一个可能的方法是:

x <- 1:6

x <- sort(x) # increasing order

mean(x[-c(1, length(x)]) # remove first and last value from vector
[1] 3.5

或者这样:

mean(x[-c(min(x), max(x))])
[1] 3.5
ie3xauqp

ie3xauqp4#

以下是您的which解决方案:

x <- sample(1:10)
x
[1]  7  1 10  5  4  3  8  2  9  6
x[-which(x == max(x) | x == min(x))]
[1] 7 5 4 3 8 2 9 6
mean(x[-which(x == max(x) | x == min(x))])
[1] 5.5

相关问题