【问题标题】:How to remove outliers in only one column after grouping by another column in R在R中按另一列分组后如何仅删除一列中的异常值
【发布时间】:2025-12-26 07:35:16
【问题描述】:

我想在按 TYPE 分组后从变量 MEASURE 中删除异常值。我尝试了以下代码,但没有成功。我已经搜索过,我只遇到过如何删除整个数据框或一列的异常值。但不是在分组之后。

df2 <- df %>%
  group_by(TYPE) %>%
  mutate(MEASURE_WITHOUT_OUTLIERS = remove_outliers(MEASURE))

【问题讨论】:

  • remove_outliers 函数来自哪个包?您能否展示用于从整个数据框或一列中删除异常值的代码?
  • 您好,我尝试查找 remove_outilers 的包,但找不到。我尝试了以下方法,df 带有 0 个观察值,这是不可能的。 library(rstatix) df_no_outliers % group_by(TYPE) %>% identify_outliers(MEASURE) %>% filter(!is.outlier)

标签: r dplyr group-by outliers


【解决方案1】:

您可以使用boxplot.stats 获取每个组中的异常值,并使用filter 删除它们。

library(dplyr)

df2 <- df %>%
  group_by(TYPE) %>%
  filter(!MEASURE %in% boxplot.stats(MEASURE)$out) %>%
  ungroup

【讨论】:

  • 谢谢!你知道 boxplots.stats 用什么方法来检测异常值吗?我想报告该方法。另外,ungroup 在这段代码中做了什么?
  • 由于我们的数据是分组的,因此在工作完成后ungroup 数据是一个很好的做法。虽然,不这样做不会改变任何事情。您可以阅读这篇文章*.com/questions/27036134/… 了解更多信息。
  • 再次感谢!这很有帮助。
最近更新 更多