r - 我们可以创建一个比 R 中的值多 n 个级别的因子变量子集吗?

标签 r machine-learning filtering random-forest r-factor

我正在尝试对一组变量运行随机森林。大多数变量都是分类变量(因子),有些变量有很多值。我的数据集有大约 1500 个变量,我想删除那些超过 50 个类别的变量。

在 R 中可以做到这一点吗?

编辑:我一直在尝试对此进行编码:

如果变量是因子,则计算nlevels的数量。如果 nlevels >50,则丢弃。

最佳答案

您可以尝试使用函数nlevels来检索每列的级别数。下面是一个使用 mtcars 的示例,其中所有列都转换为因子,并且我们只保留级别少于 10 个的因子。

require(dplyr)

df <- as.data.frame(sapply(mtcars, as.factor))

good.columns <- names(df)[sapply(df, nlevels) < 10]

filtered.df <- df %>% select(good.columns)

注意:在您的情况下,它也适用于非因子列,因为非因子列的级别数等于 0。

关于r - 我们可以创建一个比 R 中的值多 n 个级别的因子变量子集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48977922/

相关文章:

r - 如何合并 column1 是 column2 的子字符串的数据框

r - 除了功能帮助文件和演示之外,是否有 R 包的通用手册, "quantstrat","blotter","FinancialInstrument"等?

python - Tensorflow 自动编码器成本不会降低?

Javascript 多条件数组过滤器

vba - 在 VBA 过滤表中选择第一 10 行可见单元格

r - 拼凑不会减少两个 ggplot2 之间的空白

r - 检查 R 中的两个区间是否重叠

python-3.x - Wine 质量数据集分析

machine-learning - 仅根据表格数据检测 HTML 表格方向