【发布时间】:2021-05-28 20:31:00
【问题描述】:
我正在尝试从我的数据集中删除一些异常值。我正在一次调查数据中的每个变量。我已经为变量构建了箱线图,但不想删除所有分类的异常值,只删除最极端的。因此,我注意到箱线图上的值我不希望我的变量超过,并尝试删除与具有超过所选值的特定列值的观察相对应的行。
例如, 我的数据集称为牛奶,其中一个变量称为 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 值而不是当我开始尝试做的只是在列值超过某个数字时删除观察值。
有人可以帮忙吗?我很绝望
【问题讨论】:
-
我建议使用
dplyr工具,因为它们更明确地说明了您正在做什么:dplyr::filter(milk, alpha_s1_casein < 29),
标签: r subset na outliers row-removal