Функция с ggplot: конкретные параметры выбора для динамических графиков - PullRequest
0 голосов
/ 30 апреля 2019

Я новичок в R, и у меня возникла проблема с алгоритмическим пониманием.

У меня есть функция с именем country_function(), которая может строить гистограмму.Входные данные "export00", поэтому country_function(export00) работает хорошо.

Но я бы хотел добавить один параметр t в функцию для создания выборки данных.

Мой фрейм данныхдовольно просто:

   Country          Number

 1 Portugal         100000       
 2 Poland           200000       
 3 Israel           300000 
 4 South Africa     400000
 5 Austria          500000

Я бы хотел, чтобы буквой "t" было число стран, которые я хочу видеть, а остальные перейдут в категорию "Другие".

Итак country_function(export00, 2) покажет 2 страны с наибольшим числом (Австрия и Южная Африка), а остальные будут "Другие" (и другое - сумма чисел).

На данный момент, мой код используетifelse, чтобы выбрать страны под определенным номером («ifelse (Number <400000 ...»). Поэтому просто ввести ta, чтобы заменить число на t. Но для нового кода я не знаю, что изменить. </p>

country_function <- function(export00) {

  country = export00 %>%
    filter(Number> 100000000) %>%
    mutate(Country = ifelse(Number< 400000000, "Other", Country)) %>%
    group_by(Country) %>%
    summarise(Number= sum(Number))

  p_country = country %>%
    arrange(Number) %>%
    mutate(Country = factor(Country, levels = Country)) %>%
    ggplot(aes(x = Country, y = Number, label = Number, fill = Number)) +
    geom_text(check_overlap = TRUE, hjust = "bottom", size = 2)

  return(p_country)
}

Подводя итог, у меня есть график работы с рядом стран, которые я решил выбрать, выбрав минимальный номер, а остальное - Другое, но я хотел бы выбрать номер страны, которую я хочу видеть в своем графике.а остальное будет другим.

1 Ответ

0 голосов
/ 30 апреля 2019

Может как то так?

country_function <- function(export00, n) {

  country = export00 %>%
    arrange(Number) %>%
    mutate(Country = ifelse(row_number() >= n, as.character(Country), "Other")) %>%
    group_by(Country) %>%
    summarise(Number= sum(Number))

  p_country = country %>%
    arrange(Number) %>%
    mutate(Country = factor(Country, levels = Country)) %>%
    ggplot(aes(x = Country, y = Number, label = Number, fill = Number)) +
    geom_text(check_overlap = TRUE, hjust = "bottom", size = 2) +
    geom_bar(stat="identity")

  return(p_country)
}

И чтобы вызвать функцию и нарисовать диаграмму:

graph <- country_function(export00,3)
graph
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...