#r #filter #dplyr
#r #Фильтр #dplyr
Вопрос:
Хорошо, итак, у меня есть данные как так:
ID Name Job
001 Bill Carpenter
002 Wilma Lawyer
003 Greyson Lawyer
004 Eddie Janitor
Я хочу сгруппировать их вместе для анализа, чтобы любое задание, которое отображается менее x процентов от общего числа, было сгруппировано в «Другое»
Как я могу это сделать, вот что я пробовал:
df %>%
group_by(Job) %>%
summarize(count = n()) %>%
mutate(pct = count/sum(count)) %>%
arrange(desc(count)) %>%
drop_na()
И теперь я знаю, каковы проценты, но как мне интегрировать это в исходные данные, чтобы сделать все, что ниже X, «Другим». (допустим, менее или равный 25% — это другое).
Может быть, есть более простой способ….
Ответ №1:
Вы можете попробовать это :
library(dplyr)
df %>%
count(Job) %>%
mutate(n = n/sum(n)) %>%
left_join(df, by = 'Job') %>%
mutate(Job = replace(Job, n <= 0.25, 'Other'))
Чтобы интегрировать наши вычисления в исходные данные, мы делаем left_join
, а затем replace
значения.