如何从R中的数据框中删除包含唯一因子级别的行?

时间:2016-10-07 02:08:44

标签: r

我有一个名为Keywords的列,它是一个包含150个级别的因子数据类型。大多数这些级别是其他级别或拼写错误的组合。我想删除Keyword只有1-5个实例的级别的所有行。我怎么做?

例如:

我们说我有300行' a'作为关键字,有几百个,几百个。但是我有100个其他级别,应该是这三个级别中的一个,但是有一些变体,比如' A 1'或者' A2'。我只是试图了解数据,但所有相对较低的水平都在抛弃所有图表。

2 个答案:

答案 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