【问题标题】:Removing rows based upon frequency of factor/categorical value in a column根据列中因子/分类值的频率删除行
【发布时间】:2016-02-15 00:21:22
【问题描述】:

我有一个数据集,我将对其进行交叉验证训练。但是,由于数据的这种拆分,我有时会遇到错误,因为在测试集中找到的因子水平在训练集中没有找到----因为这个因子可能出现的次数非常有限。

我想要一种在进行任何交叉验证之前轻松过滤掉这些行以避免错误的方法...

例如,我将如何检查以确保删除包含 9 个或更少观察值的因子?

mtcars$carb = factor(mtcars$carb)
table(mtcars$carb)

【问题讨论】:

标签: r subset regression cross-validation training-data


【解决方案1】:

使用库dplyr,您可以尝试以下操作:

library(dplyr)
mtcars %>% group_by(carb) %>% filter(n() > 9)

或者,您可以重新考虑训练集中的变量,并从测试集中删除任何不在训练数据中的级别。

【讨论】:

  • 基础版本 - with(mtcars, mtcars[carb %in% levels(carb)[table(carb) > 9],])
猜你喜欢
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 2014-06-14
  • 2020-07-12
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
相关资源
最近更新 更多