在mutate语句中出现意外的“=”

时间:2017-12-04 05:58:38

标签: r dplyr mutate

我试图通过用NA取代它们来推断异常值。以下是我的代码:

for (i in colnames(numTable)){
  m <- mean(pull(numTable[,i]), na.rm=TRUE)
  s<-sd(pull(numTable[,i]),na.rm=TRUE) 
  numTable %>% 
         mutate(numTable[,i] = replace(numTable[,i], abs(numTable[,i]-m)>3*s,na.rm=TRUE), NA)
}

NumTable看起来像这样:enter image description here

我不断收到错误消息

Error: unexpected '=' in:
      " numTable %>% 
        mutate(numTable[,i] ="

请帮帮我。感谢。

1 个答案:

答案 0 :(得分:0)

@ akrun的建议版本有效,但它有一些拼写错误。在更正后,以下代码行运行没有错误:

numTable %>% mutate_all(funs(replace(., abs(. - mean(., na.rm = TRUE)) > 3 * sd(., na.rm = TRUE), NA)))

我用数据的前两列测试了这个。由于这些列中不满足不等式条件,我重新运行它改变了&#34; 3 * sd&#34;到&#34; 1 * sd&#34;并获得以下,我认为反映了你想要的:

# A tibble: 6 x 2
  M     R
  <dbl> <dbl>
1   138    NA
2   240    14
3    NA     6
4    NA    NA
5   239    20
6   253    10

如果您不确定此处发生了什么,建议您从简化版开始,例如:

numTable %>% mutate_all(funs(. * 100))

然后逐渐将其转换为@akrun提供的代码。