【问题标题】:Reduce levels from factor variable减少因子变量的水平
【发布时间】:2017-05-23 13:29:27
【问题描述】:

我必须在大型火车集中做一个随机森林,但我不能使用超过 53 个级别的变量。

我需要减少的因子变量 (train$tip) 有 150 个级别(KHC、KTF、KGL、...)。我怎样才能(快速)删除(或只保留 53 个级别)出现次数很少的级别并保留更多的级别?

我是否要写下我看到的所有级别的名称,或者有更快的方法吗?

train <- train[!train$tip == "KTF", ]

【问题讨论】:

  • 您可以使用tbl &lt;- table(train$tip)并根据频率进行选择,即subset(train levels(tip) %in% names(tbl[tbl &gt; 50]))

标签: r variables reduce levels


【解决方案1】:

你可以这样做:

train <- train[train$tip %in% names(sort(table(train$tip), decreasing = TRUE))[1:53], ]

table() 计算级别的频率; sort() 按降序排列它们; names() 获取级别而不是频率;而[ 只选择前 53 个。

【讨论】:

  • 对不起,我忘了加名字;看看我的编辑,它现在应该可以工作了
  • 现在可以了!谢谢。我如何从变量提示中删除现在具有 0 obs 的级别?我在 str(train$tip) 中看到了所有 150 个级别
  • 你也可以使用droplevels()
猜你喜欢
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多