r - 如何根据值是否超过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 值,而不是当我开始尝试做的只是在列值超过某个数字时删除观察值时。
任何人都可以帮忙吗?我很绝望
解决方案
在不使用其他包的情况下,要删除数据集中 alpha_s1_casein 的值大于29 的所有行,您可以这样做:
milk <- milk[-which(milk$alpha_s1_casein > 29),]
推荐阅读
- java - 获取所有质数到一个点
- python - DataFrame 是如何产生这个结果的?
- c++ - MacOS 10.14b / C++ 使用:找不到命令,怎么办?
- java - 公共接口 BaseRepository 扩展了 JpaRepository
{ } - python - 使用 Python 3 在 Arcade 中居中窗口
- sqlite - 使用 TCL:在内存临时表中创建表时出现 Sqlite 语法错误
- arrays - 测试排序函数正确性的最快方法是什么?
- python - Python - 重载异步方法
- javascript - 获取从 SweetAlert2 到 PHP 的电子邮件值?
- javascript - 代码适用于 jsfiddle 但不适用于 localhost 为什么