如何使用NA识别和替换数据框中的范围外数据?
我目前正在使用以下代码使用箱形图识别异常值,然后手动确定哪些超出范围(例如,比例为1-4,数据点为负)并将其删除。
>boxplot(data$scale1, data = data)
>outliers <- boxplot(cw$N, plot=FALSE)$out
>outliers
>data$scale1[data$scale1==-7.58] <- NA
我正在为每个变量手动执行此操作,因为它们都有超出范围的不同截止点,我想知道是否有更简单的方法来执行此操作?
谢谢
答案 0 :(得分:0)
只是按照以下方式发表评论:
# Make up some data
data <- data.frame(scale1=(c(0,-1,2,4,3,2,1,1,8,5)))
# Define scale min and max
scale1.min <- 0
scale1.max <- 4
# Set NAs for Outliers
data$scale1[data$scale1 < scale1.min | data$scale1 > scale1.max] <- NA
正如Tobias已经指出的那样,您可以轻松地为多个变量执行此操作:
# Again make up some data
data <- data.frame(scale1=(c(0,-1,2,4,3,2,1,1,8,5)))
data["scale2"] <- data$scale1 - 1
data["scale3"] <- data$scale1 + 2
data["scale4"] <- data$scale1 + 5
# Define your cut off points
scale.min <- c(0,-1,2,3)
scale.max <- c(4,2,4,8)
for(i in 1:length(scale.min))
{
data[,i][data[,i] < scale.min[i] | data[,i] > scale.max[i]] <- NA
}
希望有所帮助。