Рассчитать среднее по группе на основе критериев фильтра - PullRequest
1 голос
/ 23 октября 2019

Извиняюсь за вопрос новичка, все еще изучая DPLYR (и R в целом).

У меня есть следующий набор данных, и я пытаюсь определить средний рейтинг для каждой группы областей, где естьбольше 1 записи.

Area    Rating
UK      5.256
Ireland 6.1465
Canada  6.1452 
USA     6.14
Ireland 4.258
USA     3.154

Мои ожидаемые возвращаемые данные будут:

Area    Count    Average_Rating 
Ireland 2        5.20255
USA     2        4.647

Я пробовал следующий код и, кажется, падает, когда я пытаюсь выполнитьстолбец 'count' (возвращает среднее значение для всех областей)

df %>%
 group_by (Area) %>%
 mutate (count =n()) %>%
 summarise (mean = mean(Average_Rating)) %>%
 arrange(desc(mean))

Я попытался поиграть с порядком глаголов, но безуспешно. Любая помощь с благодарностью!

1 Ответ

3 голосов
/ 23 октября 2019

Нам нужно filter после шага group_by

library(dplyr)
df1 %>%
   group_by(Area) %>%
   filter(n() > 1) %>%
   summarise(Count = n(), Average_Rating = mean(Rating)) %>%
   arrange(desc(Average_Rating))
# A tibble: 2 x 3
#  Area    Count Average_Rating
#  <chr>   <int>          <dbl>
#1 Ireland     2           5.20
#2 USA         2           4.65

data

df1 <- structure(list(Area = c("UK", "Ireland", "Canada", "USA", "Ireland", 
"USA"), Rating = c(5.256, 6.1465, 6.1452, 6.14, 4.258, 3.154)), 
class = "data.frame", row.names = c(NA, 
-6L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...