使用dplyr过滤数据帧后,从因子中删除未使用的级别

时间:2017-08-23 07:08:34

标签: r dplyr plyr

我使用dplyr函数创建一个包含少于4行的名称的新数据集。

df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9)

aa = df %>%
    group_by(name) %>%
    filter(n() < 4)

但是当我输入

table(aa$name)

我明白了,

a b c 
3 2 0 

我希望我的输出如下

a b 
3 2 

如何将新帧aa与df完全分开?

2 个答案:

答案 0 :(得分:6)

要完成您的答案和KoenV的评论,您可以在一行中编写解决方案或应用函数factor将删除未使用的级别:

table(droplevels(aa$name))
table(factor(aa$name))

或者因为您在最后使用dplyr添加droplevels

aa <- df %>%
       group_by(name) %>%
       filter(n() < 4) %>% 
       droplevels()
table(aa$name)

# Without using table
df %>%
  group_by(name) %>%
  summarise(count = n()) %>% 
  filter(count < 4)

答案 1 :(得分:0)

 aaNew <- droplevels(aa)
 table(aa$name)
相关问题