【问题标题】:How to remove outliers along with factor variables?如何去除异常值和因子变量?
【发布时间】:2021-10-22 10:11:21
【问题描述】:

我正在尝试从包含 3 个变量的数据集 s 中删除异常值:

id consumption period
 a      0.1    summer
 a      0.2    summer
 b      0.3    summer
 a      0.4    winter
 b      10     winter
 c      12     winter 

我使用outliers <- s$consumption[!s$consumption %in% boxplot.stats(s$consumption)$out] 删除了s 中的异常值,得到了如下结果:

consumption
   0.1
   0.2
   0.3
   0.4

但是,我想在下面得到这样的东西:

id consumption period
 a      0.1    summer
 a      0.2    summer
 b      0.3    summer
 a      0.4    winter

但是$out 函数只允许我删除带有数字(而不是因子)的列。

【问题讨论】:

  • out <- s[!s$consumption %in% boxplot.stats(s$consumption)$out, ]
  • 我试过你的代码,但它说选择了未定义的列。
  • 你确定你复制的代码正确吗?特别放置逗号?我没有选择任何列,而只选择此代码中的行。
  • 对不起,我没有正确复制。我还想出了一个不太简单的解决方案,有兴趣的可以去看看。

标签: r


【解决方案1】:

我找到了一个解决方案,即找到我从outliers <- s$consumption[!s$consumption %in% boxplot.stats(s$consumption)$out] 得到的输出的min,在这种情况下为l

consumption
   0.1
   0.2
   0.3
   0.4

通过知道我的min 值,我可以通过设置consumption 必须小于min(l) 的条件来获取s 的子集。

new <- subset(s, consumption < min(l))

【讨论】:

    猜你喜欢
    • 2019-07-06
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多