我有一个日期框架(“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
,所以我实际上正在寻找一种方法来计算某个向量的平均值,但忽略了某些值。
我们可以replace
值“99”与NA,并获得mean
与na.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)