通过变量的级别数进行子集

时间:2018-07-17 14:56:14

标签: r

我想做一个原始数据集的子集,其中包括不超过k个级别的所有列。

对于数据集x,假设k为120:

str(x):
$ A            : Factor w/ 1096193 levels ...
$ B            : Factor w/ 3 levels ...
$ C            : Factor w/ 109 levels  ...

应该是:

str(X'):
$ B             : Factor w/ 3 levels ...
$ C             : Factor w/ 109 levels  ...

1 个答案:

答案 0 :(得分:1)

我们可以使用nlevels获得每一列的级别数。为此创建一个逻辑向量(<= n-其中n是我们寻求的阈值),然后根据该逻辑列选择

n <- 120
x[sapply(x, nlevels) <= n]

或与tidyverse

library(tidyverse)
x %>%
  select_if(~ nlevels(.) <= n))