关于缺失值和 NaN 的上限函数 returns 错误?
Capping function returns error about missing values and NaN's?
我正在尝试使用以下函数来限制一些异常值,以便我的数据集整洁:
cap <- function(x){
quantiles <- quantile(x, c(.05, 0.25, 0.75, .95))
x[x < quantiles[2] - 1.5*IQR(x)] <- quantiles[1]
x[x > quantiles[3] + 1.5*IQR(x)] <- quantiles[4]
x
}
但是,似乎每次我尝试使用它时,都会收到以下错误:
"Error in quantile.default(x, c(0.05, 0.25, 0.75, 0.95)) : missing
values and NaN's not allowed if 'na.rm' is FALSE"
我使用的数据集确实有缺失值,我想忽略它们以执行此功能。我已经尝试将 na.rm = TRUE
插入函数本身的特定部分,但似乎无法得出任何不是上述错误消息的结果。
在 quantile
和 IQR
中使用 na.rm = T
应该可以解决您的问题:
cap <- function(x){
quantiles <- quantile(x, c(.05, 0.25, 0.75, 0.95), na.rm = T)
x[x < quantiles[2] - 1.5 * IQR(x, na.rm = T)] <- quantiles[1]
x[x > quantiles[3] + 1.5 * IQR(x, na.rm = T)] <- quantiles[4]
return(x)
}
这是一些测试数据:我在末尾添加了两个异常值(10 和 -20)以及一个 NA。
两个离群值替换,NA不是:
set.seed(1)
x <- c(rnorm(100), 10, -20, NA_real_)
cap(x)
我正在尝试使用以下函数来限制一些异常值,以便我的数据集整洁:
cap <- function(x){
quantiles <- quantile(x, c(.05, 0.25, 0.75, .95))
x[x < quantiles[2] - 1.5*IQR(x)] <- quantiles[1]
x[x > quantiles[3] + 1.5*IQR(x)] <- quantiles[4]
x
}
但是,似乎每次我尝试使用它时,都会收到以下错误:
"Error in quantile.default(x, c(0.05, 0.25, 0.75, 0.95)) : missing values and NaN's not allowed if 'na.rm' is FALSE"
我使用的数据集确实有缺失值,我想忽略它们以执行此功能。我已经尝试将 na.rm = TRUE
插入函数本身的特定部分,但似乎无法得出任何不是上述错误消息的结果。
在 quantile
和 IQR
中使用 na.rm = T
应该可以解决您的问题:
cap <- function(x){
quantiles <- quantile(x, c(.05, 0.25, 0.75, 0.95), na.rm = T)
x[x < quantiles[2] - 1.5 * IQR(x, na.rm = T)] <- quantiles[1]
x[x > quantiles[3] + 1.5 * IQR(x, na.rm = T)] <- quantiles[4]
return(x)
}
这是一些测试数据:我在末尾添加了两个异常值(10 和 -20)以及一个 NA。 两个离群值替换,NA不是:
set.seed(1)
x <- c(rnorm(100), 10, -20, NA_real_)
cap(x)