计算平均值和其他排除某些值

时间:2017-10-27 11:55:33

标签: r dataframe mean

我有一个日期框架(“daten”),其中大多数列都是数值。它们的范围通常为0到5.但是,它们也可以取值99.我想计算列的平均值,仅排除值99.

例如:

> mean(c(0, 1, 2, 3, 4, 5, 99))
[1] 16.28571

不是我需要的,而是我希望它被计算为好像向量是

> mean(c(0, 1, 2, 3, 4, 5))
[1] 2.5

,给我我正在寻找的意思。

有一个类似的问题(Calculate mean, median by excluding any given number),但解决方案对我不起作用。然而,我想,一旦我可以在任何列中排除某个值,我可以简单地将它与apply结合起来,所以我实际上正在寻找一种方法来计算某个向量的均值,但忽略某些值

2 个答案:

答案 0 :(得分:3)

我们可以使用NA replace值'99'并获得mean na.rm = TRUE

mean(replace(v1, v1==99, NA), na.rm = TRUE)
#[1] 2.5

数据

v1 <- c(0, 1, 2, 3, 4, 5, 99)

答案 1 :(得分:2)

你也可以试试这个:

vec1 <- c(0, 1, 2, 3, 4, 5, 99)
mean(vec1[which(vec1!=99)]
#[1] 2.5