我想做一个原始数据集的子集,其中包括不超过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 ...
答案 0 :(得分:1)
我们可以使用nlevels
获得每一列的级别数。为此创建一个逻辑向量(<= n
-其中n是我们寻求的阈值),然后根据该逻辑列选择
n <- 120
x[sapply(x, nlevels) <= n]
或与tidyverse
library(tidyverse)
x %>%
select_if(~ nlevels(.) <= n))