首页 > 解决方案 > 去除异常值后包括 NA

问题描述

删除异常值后,我想在我的数据集中包含 NA。例如,在下面的数据框中,我想删除 > 13 的异常值。我已按数据框进行子集化以创建没有异常值的新数据,但我的代码也删除了 NA。我曾尝试使用 na.rm= FALSE 但我只得到一个错误。

id <- c(3,3,6,6,4,4,3,3)
age_cat <- c(1,1,1,1,2,2,3,3,)
measurement <- c(10, 13, 14,13, NA, 11, NA, 17)
myData <- data.frame(id, age_cat, measurement)
myData

#If I use this the outliers are removed along with NAs
myData_no_ol <- subset(myData, myData$measurement < 13)
myData_no_ol

#If I use this I get an error
#Error: unexpected ',' in "myData_no_ol <- subset((myData,"

myData_no_ol <- subset((myData, myData$measurement < 13), na.rm= FALSE)
myData_no_ol

不知道我哪里出错了。

谢谢!磷

标签: rnaoutliers

解决方案


您只需为 is.na() 添加一个子句。因为当询问 NA < 13 时,R 将返回 NA 而不是 T 或 F

myData_no_ol <- subset(myData, myData$measurement < 13 | is.na(myData$measurement))

推荐阅读