r - 识别异常值并仅在 R 中使用 groupby 多列处理异常值?
问题描述
我想用多列分组识别异常值,并用 95% 和 5% 的值处理异常值。我创建了一个函数来处理如下异常值。
fun_name <- function(data,x){
qnt <- quantile(data$x, probs=c(.25, .75), na.rm = T)
caps <- quantile(data$x, probs=c(.05, .95), na.rm = T)
H <- 1.5 * IQR(data$x, na.rm = T)
data[which(data$x < (qnt[1] - H)),"x"] <- caps[1]
data[which(data$x > (qnt[2] + H)),"x"] <- caps[2]
return(data)
}
我已经尝试像下面这样用 group by 估算异常值:
total_data <- data%>%
group_by(col1,col2,col3,col4)%>%
mutate(fun_name(data,col5)) ## col5 is of numric type.
我收到错误:
Column `fun_name(data,col5)` is of unsupported class data.frame
哪里出错了?建议我。
解决方案
您应该将功能更改为:
fun_name <- function(x){
qnt <- quantile(x, probs=c(.25, .75), na.rm = TRUE)
caps <- quantile(x, probs=c(.05, .95), na.rm = TRUE)
H <- 1.5 * IQR(x, na.rm = TRUE)
x[which(x < (qnt[1] - H))] <- caps[1]
x[which(x > (qnt[2] + H))] <- caps[2]
return(x)
}
然后将其用作:
library(dplyr)
data%>% group_by(col1,col2,col3,col4)%>% mutate(col = fun_name(col5))
推荐阅读
- java - Spring boot 找不到 org.springframework:springloaded:jar:2.1.6.RELEASE
- flutter - 如何构建应用程序状态,以便在状态更改时更新所有依赖的小部件?
- javascript - 处理后如何异步处理,删除元素
- html - Base64 图像编码 - 如果编码的图像在 src 字符串中,为什么它会调用服务器
- sql - 从未订购过某种产品的客户的 SQL 统计信息
- javascript - 框的“0”宽度呈现为“1”宽度
- vba - vba 代码在 UPDATE 语句中生成语法错误
- r - 发布 rmd 格式
- linux - 库名包含空格时如何组合多个静态库?
- url - 是否有 Instagram 的 URL 链接到带有 user_id 的用户个人资料?