如何根据计数分解一个因子的水平?

时间:2019-04-09 13:26:10

标签: r

我有一个包含40个级别的变量,我想将计数少于500的所有级别折叠到一个名为“其他”的新级别中

我玩过group_category函数,但是我仍然是R的新手,所以我还不能弄清楚。

样本数据:

第1组n = 21,000

第2组n = 1,000

第3组n = 499

第4组n = 1

预期输出:

第1组n = 21,000

第2组n = 1,000

其他n = 500

1 个答案:

答案 0 :(得分:0)

要使用基本的R解决方案:

## sample to mix up the vector a bit
set.seed(123)
x <- sample(factor(rep(1:4, c(21000, 1000, 499, 1))))

## count occurence of levels
tab <- c(table(x))
## lookup table, where...
lkp <- setNames(names(tab), names(tab))
## elements with count <500 are labelled "other"
lkp[tab < 500] <- "other"
## create new factor with proper labels
y <- factor(lkp[as.character(x)])
## check the result
table(x, y)
## Recoding worked
#    y
# x       1     2 other
#   1 21000     0     0
#   2     0  1000     0
#   3     0     0   499
#   4     0     0     1