【问题标题】:R check for outliers in multiple variablesR检查多个变量中的异常值
【发布时间】:2020-07-13 18:25:30
【问题描述】:

我需要检查我的数据中的异常值,我有 67 个不同的变量。所以我不想手动做。这是我手动检查的代码(我要检查三个因素 - voiceID、性别和 VP)。但我不知道如何将其更改为遍历列的循环。

features %>%
  group_by(voiceID, gender, VP) %>%
  identify_outliers(meanF0)

这些值都是数字。输出应该告诉我哪些因素的哪些行是异常值。 感谢帮助

【问题讨论】:

  • 请展示一个可重现的小例子和预期的输出。试试%>% mutate(across(where(is.numeric), identify_outliers))
  • @akrun 这会引发错误 - 错误:mutate() 输入问题..1。 x 数据应该是一个数据框
  • 我假设你有一个名为identify_outliers的函数
  • identify_outliers() 是 R 的内置函数
  • 我用?identify_outliers# No documentation for ‘identify_outliers’ in specified packages and libraries:找不到它

标签: r group-by outliers


【解决方案1】:

identify_outliers 的输出是具有多个列的tibble,一次可以使用一个变量。变量名可以加引号或不加引号。在这种情况下,我们可以通过分组变量group_split 数据,然后遍历感兴趣的列,并应用identify_outliers

library(dplyr)
library(purrr)
library(rstatix)
nm1 <- c("score", "score2")
 demo.data %>%
     group_split(gender) %>%
        map(~  map(nm1, function(x) .x %>% 
                identify_outliers(x))) 

如果我们要计算异常值,

features %>%
   group_by(voiceID, gender, VP)  %>%
   summarise(across(everything(), ~ length(boxplot(., plot = FALSE)$out)))

【讨论】:

  • 它可以工作,但即使我在 nm1 中指定了几个变量,输出也会显示 demo.data 中的所有列。它看起来很乱,我看不出输出是异常值还是极端异常值。你有什么想法吗?
  • @maybeyourneighour 我理解这个问题。最好在您的帖子和预期输出中显示一个带有dput 的小型可重复示例,以便在有参考框架时变得更容易。我对这段代码的想法是展示一种应用于不同列的方法。正如我所指出的,输出是一个 data.frame,我不确定您想要哪种格式的预期输出
  • 我明白,但我发现,我看不到异常值是否极端,因为我有这么多列(所以在这里做一个重复的例子不好)。有没有办法显示只有极端异常值的行?
  • 或计算每个变量的极端异常值?
  • @maybeyourneighour 我更新了极端值的counting
猜你喜欢
  • 2012-01-12
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多