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

Luk*_*kas 1 r mean dataframe

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

例如:

> mean(c(0, 1, 2, 3, 4, 5, 99))
[1] 16.28571
Run Code Online (Sandbox Code Playgroud)

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

> mean(c(0, 1, 2, 3, 4, 5))
[1] 2.5
Run Code Online (Sandbox Code Playgroud)

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

有一个类似的问题(通过排除任何给定数字来计算平均值,中位数),但该解决方案对我不起作用。然而,我想,一旦我可以排除任何列中的某个值,我就可以简单地将它与 组合apply,所以我实际上正在寻找一种方法来计算某个向量的平均值,但忽略了某些值。

akr*_*run 5

我们可以replace值“99”与NA,并获得meanna.rm = TRUE

mean(replace(v1, v1==99, NA), na.rm = TRUE)
#[1] 2.5
Run Code Online (Sandbox Code Playgroud)

数据

v1 <- c(0, 1, 2, 3, 4, 5, 99)
Run Code Online (Sandbox Code Playgroud)