首页 > 解决方案 > 如何根据值是否超过Rstudio中特定列中的给定数字来删除数据集中的行

问题描述

我正在尝试从我的数据集中删除一些异常值。我正在一次调查数据中的每个变量。我已经为变量构建了箱线图,但不想删除所有分类的异常值,只删除最极端的。所以我注意到箱线图上的值我不希望我的变量超过并尝试删除与具有超过所选值的特定列值的观察相对应的行。

例如,我的数据集称为牛奶,其中一个变量称为 alpha_s1_casein。我认为以下内容将删除数据集中 alpha_s1_casein 的值大于 29 的所有行:

milk <- milk[milk$alpha_s1_casein < 29,]

事实上确实如此。数据框中的行数从 430 减少到 428。但是它在我的数据集中的非相关列中引入了很多 NA 值

在我运行上面的代码之前,NA的数量是

sum(is.na(milk))

5909 NA 值 但是在执行上述操作之后,现在返回的 NA 的总和是

sum(is.na(milk))

75912 NA 值。

我不明白这里出了什么问题,为什么我正在做的是引入更多的 NA 值,而不是当我开始尝试做的只是在列值超过某个数字时删除观察值时。

任何人都可以帮忙吗?我很绝望

标签: rsubsetnaoutliersrow-removal

解决方案


在不使用其他包的情况下,要删除数据集中 alpha_s1_casein 的值大于29 的所有行,您可以这样做:

milk <- milk[-which(milk$alpha_s1_casein > 29),]

推荐阅读