我有一个名为Keywords
的列,它是一个包含150个级别的因子数据类型。大多数这些级别是其他级别或拼写错误的组合。我想删除Keyword
只有1-5个实例的级别的所有行。我怎么做?
例如:
我们说我有300行' a'作为关键字,有几百个,几百个。但是我有100个其他级别,应该是这三个级别中的一个,但是有一些变体,比如' A 1'或者' A2'。我只是试图了解数据,但所有相对较低的水平都在抛弃所有图表。
答案 0 :(得分:4)
像
这样的东西tt <- table(dd$Keywords)
rare_levels <- names(tt)[tt<5]
dd <- subset(dd,!Keywords %in% rare_levels)
您可以在子集化后使用dd$Keywords <- factor(dd$Keywords)
或dd$Keywords <- droplevels(dd$Keywords)
从级别列表中删除稀有因子级别(观察,而不是级别本身, subset
)
答案 1 :(得分:4)
您可以使用dplyr
包函数n()
library(dplyr)
mtcars %>%
mutate(cyl = as.factor(cyl)) %>%
group_by(cyl) %>%
filter(n() >12) # require each level with more than 12 obs