Пытаетесь отфильтровать 10 лучших записей, используя R? - PullRequest
4 голосов
/ 21 апреля 2019

Итак, у меня есть набор данных о ВНД на душу населения и количестве самоубийств в странах, и я пытаюсь отфильтровать только 10 стран с самым высоким ВНД. Моя проблема заключается в том, что в моем наборе данных есть дубликаты записей для стран для ВНД, так как у меня также есть статистика самоубийств для конкретной возрастной группы по полу для каждой страны.

Я попытался применить следующий код с помощью функции top_n в Dplyr:

top_highest_gni <- df_filter_ages %>%   group_by(as.numeric(as.character(GNI.per.capita..PPP..current.international.....NY.GNP.PCAP.PP.CD.))) %>% 
      top_n(10)

Однако это никак не влияет на мой набор данных, и сообщение об ошибке не появляется, и я не уверен, почему? Буду признателен за любую помощь в этом!

Данные выглядят так:

Country   Year   Sex  GNI
Albania   2012   F    290000
Albania   2012   M    290000
UK        2012   F    2222222222
UK        2012   M    2222222222

Редактировать

Как и предполагалось, я добавил функцию суммирования и запустил этот код:

df_filter_ages %>%
  group_by(country) %>% 
  summarise(max = max(as.numeric(as.character(GNI.per.capita..PPP..current.international.....NY.GNP.PCAP.PP.CD.)))) %>% 
  top_n(2)

И вывод:

Selecting by max
     max
1 119330

Желаемый выход:

Country   Year   Sex  GNI

UK        2012   F    2222222222
UK        2012   M    2222222222
Albania   2012   F    290000
Albania   2012   M    290000

1 Ответ

2 голосов
/ 21 апреля 2019

Попробуйте включить функцию summarise() после функции group_by() и перед функцией top_n().

Пример:

df <- data.frame(x = c(1, 2, 3), 
                 y = c(4, 5, 6), 
                 z = c(1, 20, 50))

df %>%
  group_by(x) %>% 
  summarise(max = max(z)) %>% 
  top_n(2)

#  A tibble: 2 x 2
#       x total
#   <dbl> <dbl>
# 1     2    20
# 2     3    50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...