找出R中所有特定子集的离群值?

路易斯·H

我的数据中有几种情况和几种测量类型。
我希望R分别为我提供每对条件和测量类型的异常值。
举例来说,假设我有3个条件(1-3)和3种类型的度量(AC),用于多个参与者,每行都有一个值x。我想获取条件1和量度A,条件2和量度B等的x值的离群值
(量度和条件均非数字)

我尝试创建一个循环

for(d in unique(data$measure)){
  for(c in unique(data$condition)){
    data %>%
      filter(measure == d, condition ==c) %>%
      o <- outlier(data$value) %>%
      print(o)
  }
}

这个想法是R将遍历每个条件并进行循环测量,并且每次都会挑选出与这些条件匹配的值并计算离群值。当我运行整个代码时,我收到此错误消息

Error in print.default(., o) : invalid printing digits -2147483648
In addition: Warning message:
In print.default(., o) : NAs introduced by coercion to integer range

(如果我没有循环运行它,例如通过搜索特定条件的离群值,那么它在第一行之后也找不到管道函数。)

关于如何正确编码的任何想法?

r2evans

您已经在使用dplyr,所以我建议您使用group_by,因为(对我而言)这是一种处理数据的更自然的方式。

另外,这部分语法不正确:

    data %>%
      filter(measure == d, condition ==c) %>%
      o <- outlier(data$value) %>%
      print(o)

为什么?

  1. filter(...) %>%应输送至东西接受的框架,但是...你要发送的输出filter分配 o <- outlier(...)(然后print(o),它真正的意思print(., o),其中.是从以前的命令的输出。

  2. 此外,由于o尚未在第一次运行时定义...,您应该会遇到关于的错误object 'o' not found您不会在循环的后续遍历中得到它,因为它确实存在...但是,如果是的话,那是循环中一次迭代的异常值当然不是您应该使用的。

该代码的直接更正可能是:

for (...) {
  for (...) {
    o <- data %>%
      filter(measure == d, condition ==c) %>%
      do({ data.frame(outliers = outlier(.$value)) })
    print(o)
  }
}

其中o将一个data.frame(当然,tbl_dftibble)与三列:measurecondition,和outliers使用的do需要在这种情况下,因为大多数非tidyverse函数忽略group_by分组,所以我们要用do到侧步这个问题。

不过,也许这可以将两个循环替换为一个命令:

data %>%
  group_by(measure, condition) %>%
  summarize(outliers = outlier(value)) %>%
  ungroup()

我假设你想要的是对的每个唯一组合的所有异常值measurecondition,并且该outlier(.)函数返回一个向量(一些长度> = 1)。如果没有发现异常值,则不会包含measure/condition对...如果这是一个因素,则使用类似

data %>%
  group_by(measure, condition) %>%
  summarize(outliers = list(outlier(value))) %>%
  tidyr::unnest(outliers, keep_empty = TRUE) %>%
  ungroup()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取R中数据框中所有列的离群值

如何找出多数组中所有特定键是否都具有特定值?

使用R更改数据列中所有列的所有值(特定列除外)

注入所有现有数据源的特定子集

如何替换bash中所有字符串中的特定子字符串?

是否可以遍历除特定子集以外的所有字典键?

如何使用 Flutter 和 Firestore 获取属于特定子集合的所有文档

找出在特定时间的mysql中所做的所有条目

计算特定列中所有 NaN 值的累积计数

如何更新数组中所有对象的特定值?迅速

如何替换列表中所有元素的特定值

汇总特定类别中所有帖子的元值

生成指定子网中所有DNS记录的列表

R- 子集或打印 5x14 数据帧中所有可能的列对

递归生成给定子集大小的所有组合(C ++)

如何删除R中所有NULL值的行

更改 R 数据框中所有列中的值

删除R中所有值均低于0.10(所有行)的所有行

R:获取所有列表子集的最佳 N 个值

R:针对特定子集按行分组和求和

如何正确删除r中特定列表元素的离群值?

R中的子集似乎不起作用:具有要作为子集的特定值的行的值

如何将所有数据作为R中的箱形图的非离群值处理?

R:找出离群值并将其标记在箱图中

修改列表中所有向量的子集(无循环)

如果在列中找到特定值,如何获取行中所有值的列表

创建 R 中数据帧中所有列的所有值的向量

查找数组中所有对象均具有特定值的文档

递归计算目录中所有文件的列中具有特定值的行数