我有一个包含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
答案 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