Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
寻找R中所有特定子集的异常值?_R_Loops_Filter_Outliers - Fatal编程技术网

寻找R中所有特定子集的异常值?

寻找R中所有特定子集的异常值?,r,loops,filter,outliers,R,Loops,Filter,Outliers,我的数据中有几种情况和几种测量类型我希望R分别给出每对条件和测量类型的离群值 例如,假设我有3个条件(1-3)和3种度量(A-C),对于几个参与者,每行的值为x。我想要条件1和测量值A、条件2和测量值B等的值x的离群值。 (测量值和条件均为非数字) 我试过创建一个循环 for(d in unique(data$measure)){ for(c in unique(data$condition)){ data %>% filter(measure == d, cond

我的数据中有几种情况和几种测量类型
我希望R分别给出每对条件和测量类型的离群值
例如,假设我有3个条件(1-3)和3种度量(A-C),对于几个参与者,每行的值为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)
  }
}
(如果我在没有循环的情况下运行它,例如通过搜索特定条件的异常值,它也无法在第一行之后找到管道函数。)


你知道如何正确编码吗?

你已经在使用
dplyr
,所以我建议你使用
groupby
,因为它(对我来说)是一种更自然的数据处理方式

此外,此部分的语法不正确:

数据%>%
过滤器(度量==d,条件==c)%>%
o%
打印(o)
为什么?

  • 过滤器(…)%%>%
    应该通过管道连接到接受帧的对象,但是。。。您正在将
    filter
    的输出发送到作业
    o%
    do({data.frame(离群值=离群值(.$value))})
    打印(o)
    }
    }
    
    其中,
    o
    将是一个
    data.frame
    (嗯,
    tbl_df
    tibble),有三列:
    度量
    条件
    ,和
    异常值
    。在这种情况下,需要使用
    do
    ,因为大多数非tidyverse函数忽略
    groupby
    分组,所以我们使用
    do
    来回避这个问题

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

    数据%>%
    分组依据(测量、条件)%>%
    汇总(异常值=异常值(值))%>%
    解组()
    
    我假设您想要的是
    度量值
    条件
    的每个唯一组合的所有离群值,并且
    离群值(.)
    函数返回一个向量(某个长度>=1)。如果未发现异常值,则将不包括
    度量
    /
    条件
    对。。。如果这是一个因素,那么使用

    数据%>%
    分组依据(测量、条件)%>%
    汇总(异常值=列表(异常值(值)))%>%
    tidyr::unnest(异常值,保持为空=真)%>%
    解组()
    
    您已经在使用
    dplyr
    ,因此我建议您使用
    groupby
    ,因为它(对我来说)是一种更自然的数据处理方式

    此外,此部分的语法不正确:

    数据%>%
    过滤器(度量==d,条件==c)%>%
    o%
    打印(o)
    
    为什么?

  • 过滤器(…)%%>%
    应该通过管道连接到接受帧的对象,但是。。。您正在将
    filter
    的输出发送到作业
    o%
    do({data.frame(离群值=离群值(.$value))})
    打印(o)
    }
    }
    
    其中,
    o
    将是一个
    data.frame
    (嗯,
    tbl_df
    tibble),有三列:
    度量
    条件
    ,和
    异常值
    。在这种情况下,需要使用
    do
    ,因为大多数非tidyverse函数忽略
    groupby
    分组,所以我们使用
    do
    来回避这个问题

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

    数据%>%
    分组依据(测量、条件)%>%
    汇总(异常值=异常值(值))%>%
    解组()
    
    我假设您想要的是
    度量值
    条件
    的每个唯一组合的所有离群值,并且
    离群值(.)
    函数返回一个向量(某个长度>=1)。如果未发现异常值,则将不包括
    度量
    /
    条件
    对。。。如果这是一个因素,那么使用

    数据%>%
    分组依据(测量、条件)%>%
    汇总(异常值=列表(异常值(值)))%>%
    tidyr::unnest(异常值,保持为空=真)%>%
    解组()
    
    如果您已经在使用
    dplyr
    ,您是否有意避免其内置(且更高效)的
    groupby
    功能?如果您已经在使用
    dplyr
    ,您是否有意避免其内置(且更高效)的
    groupby
    功能?LuiseH,这是否回答了您的问题?如果是,请。谢谢路易斯,这能回答你的问题吗?如果是,请。谢谢
    Error in print.default(., o) : invalid printing digits -2147483648
    In addition: Warning message:
    In print.default(., o) : NAs introduced by coercion to integer range