我正在尝试对一组变量运行随机森林。大多数变量都是分类变量(因子),有些变量有很多值。我的数据集有大约 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/