计算数据帧中出现的因子数,然后仅在因子数小于或等于x时删除该行

时间:2018-05-15 05:06:45

标签: r dataframe

我有一个数据框,其中$type变量是因子。

df <- data.frame(type=c('a', 'a', 'b', 'c', 'b', 'b', 'c', 'a', 'd'), state=c('Washington','Washington','Washington','Washington','Washington','Washington','Washington','Washington','Washington'))

目标:ab出现3次或更多次,但cd仅出现两次和一次。我想删除df $ type有cd的行,所以新的df应如下所示:

df <- data.frame(type=c('a', 'a', 'b', 'b', 'b', 'a'), state=c('Washington','Washington','Washington','Washington','Washington','Washington'))

2 个答案:

答案 0 :(得分:4)

使用dplyr

library(dplyr)
df %>% 
  group_by(type) %>% 
  filter(n()>2)

答案 1 :(得分:2)

以下是使用table()%in%的基础R解决方案。

df <- data.frame(
  type = c("a", "a", "b", "c", "b", "b", "c", "a", "d"),
  state = rep("Washington", 9)
)

to_keep <- names(table(df$type))[table(df$type) >= 3]
df <- df[df$type %in% to_keep, ]

df

#>  type      state
#> 1    a Washington
#> 2    a Washington
#> 3    b Washington
#> 5    b Washington
#> 6    b Washington
#> 8    a Washington