Подсчитывая количество факторов, которые встречаются во фрейме данных, затем удаляем эту строку, только если число факторов меньше или равно x - PullRequest
0 голосов
/ 15 мая 2018

У меня есть фрейм данных, где переменная $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'))

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

И используя dplyr:

library(dplyr)
df %>% 
  group_by(type) %>% 
  filter(n()>2)
0 голосов
/ 15 мая 2018

Вот базовое решение R с использованием table() и %in%.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...