我在R工作。我希望列的所有值都是'其他',其中该列中因子级别的观察数小于某个值k。
例如,如果我有一个数据帧:
data.frame('a' = c(rep(1,2),rep(3,20)), 'b' = c(rep('n',4), rep('b',5), rep('g', 13)) )
如果特定因子的观察数小于5,我想将列b
的所有值更改为“其他”。在这种情况下,我会更改值为的所有条目n
至'other'
。
答案 0 :(得分:1)
good <- names(table(dat$b))[table(dat$b)>=5]
levels(dat$b) <- c(levels(dat$b), "other")
dat$b[ !dat$b %in% good ] <- "other"
说明:找出应该保留的项目,然后扩展级别向量,使其可以接受“其他”值,然后转换不在“好”列表中的所有项目。