如何使用NA识别和替换数据框中超出范围的数据?

时间:2017-10-28 10:02:40

标签: r dataframe

如何使用NA识别和替换数据框中的范围外数据?

我目前正在使用以下代码使用箱形图识别异常值,然后手动确定哪些超出范围(例如,比例为1-4,数据点为负)并将其删除。

>boxplot(data$scale1, data = data)
>outliers <- boxplot(cw$N, plot=FALSE)$out
>outliers
>data$scale1[data$scale1==-7.58] <- NA 

我正在为每个变量手动执行此操作,因为它们都有超出范围的不同截止点,我想知道是否有更简单的方法来执行此操作?

谢谢

1 个答案:

答案 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 
}

希望有所帮助。