Создание «другого» поля

Прямо сейчас у меня есть следующий data.frame, который был созданoriginal.df %.% group_by(Category) %.% tally() %.% arrange(desc(n)).

DF <- structure(list(Category = c("E", "K", "M", "L", "I", "A", 
"S", "G", "N", "Q"), n = c(163051, 127133, 106680, 64868, 49701, 
47387, 47096, 45601, 40056, 36882)), .Names = c("Category", 
"n"), row.names = c(NA, 10L), class = c("tbl_df", "tbl", "data.frame"
))

         Category      n
1               E 163051
2               K 127133
3               M 106680
4               L  64868
5               I  49701
6               A  47387
7               S  47096
8               G  45601
9               N  40056
10              Q  36882

Я хочу создать поле «Другое» из нижних ранжированных категорий. то есть

        Category      n
1              E 163051
2              K 127133
3              M 106680
4              L  64868
5              I  49701
6          Other 217022

Щас делаю

rbind(filter(DF, rank(rev(n)) <= 5), 
  summarise(filter(DF, rank(rev(n)) > 5), Category = "Other", n = sum(n)))

который сворачивает все категории, не входящие в топ-5, в категорию «Другие».

Но мне интересно, есть ли лучший способdplyr или какой-то другой существующий пакет. Под «лучшим» я подразумеваю более сжатый / читабельный. Я также интересуюсь методами с более умными или более гибкими способами выбораOther.

Ответы на вопрос(3)

Ваш ответ на вопрос