我试图通过用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)
}
我不断收到错误消息
Error: unexpected '=' in:
" numTable %>%
mutate(numTable[,i] ="
请帮帮我。感谢。
答案 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提供的代码。