我有一个数据框,其中$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'))
目标:a
和b
出现3次或更多次,但c
和d
仅出现两次和一次。我想删除df $ type有c
和d
的行,所以新的df应如下所示:
df <- data.frame(type=c('a', 'a', 'b', 'b', 'b', 'a'),
state=c('Washington','Washington','Washington','Washington','Washington','Washington'))
答案 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