【问题标题】:Mean excluding outliers using dplyr使用 dplyr 排除异常值的平均值
【发布时间】:2015-01-02 09:34:45
【问题描述】:

我想知道是否有一种方法可以使用 R 中的 dplyr 包计算排除异常值的平均值?我试图做这样的事情,但没有奏效:

library(dplyr)
w = rep("months", 4)
value = c(1, 10, 12, 9)
df = data.frame(w, value)
output = df %>% group_by(w) %>% summarise(m = mean(value, na.rm = T, outlier = T))

所以在上面的例子中,输出应该是 10.333(10、12 和 9 的平均值)而不是 8(1、10、12、9 的平均值)

谢谢!

【问题讨论】:

  • 为什么我们认为 1 是异常值?
  • @BondedDust Ah..我应该定义它。就我而言,离群值是与平均值有最大差异的值。

标签: r statistics


【解决方案1】:

一种方法是使用outlier 包。

library(outliers) #containing function outlier
library(dplyr)

df %>%
    group_by(w) %>%
    filter(!value %in% c(outlier(value))) %>%
    summarise(m = mean(value, na.rm = TRUE))

#       w        m
#1 months 10.33333

【讨论】:

  • @PrakharMehrotra 感谢您的评论。我很高兴听到这很有帮助。一注。正如 BondedDust 提到的,您可能需要考虑如何定义异常值。
  • 您的回答帮助我了解了如何操作我正在努力过滤掉异常值的代码。在这里你可以找到我的问题stackoverflow.com/questions/69649237/…
  • @mały_statystyczny 我很高兴这篇旧帖子仍然对您有所帮助。 :)
  • 如果您想将您长期的专业知识用于另一个问题,如果允许,我会邀请您查看我遇到麻烦的新帖子。请不要有压力来提供答案。谢谢stackoverflow.com/questions/69675243/…
猜你喜欢
  • 2016-06-10
  • 1970-01-01
  • 2023-02-05
  • 2019-05-01
  • 2019-03-10
  • 2017-10-25
  • 2014-11-29
相关资源
最近更新 更多