Фильтрация значений в ggplot2? - PullRequest
0 голосов
/ 23 марта 2020

Обновление: я наконец разобрался, как сделать черчение. Код ниже работает для меня:

mydf %>%
  dplyr::filter(NAME =="" & GENDER =="") %>%
  ggplot(aes(YEAR, RANK)) +
  geom_point()

Сейчас я работаю над преобразованием его в функцию, которая будет принимать имя и пол в качестве аргументов. Функция чувствительна к регистру и должна отображать график, если аргумент пола отсутствует. Вот мой прогресс с этой функцией. Он отображает график с двумя аргументами, но если я уберу аргумент пола, он отображает пустой график. Нужно ли применять grep или grepl внутри моей функции? Спасибо всем!

 name.plot <- function(name="", gender="", ignore.case=TRUE){ 
  mydf %>% 
  dplyr::filter(NAME == name & GENDER == gender) %>% 
  ggplot(aes(YEAR, RANK)) + 
  geom_point()  
}

Я работаю над домашней работой и мне нужна помощь. Нам дали набор данных babynames, и мы должны написать функцию, которая будет принимать имя и пол и возвращать график ранжирования против года.

В настоящее время я выясняю, как сначала отобразить график. Я понял, как отобразить имя, но когда я попытался добавить пол, он просто дал мне пустой график. Может кто-нибудь, пожалуйста, помогите мне, что я делаю не так? Я пробовал обе группы и какие функции, но не повезло.

p1 <- mydf %>%
  filter(NAME =="Madison", GENDER =="girl") %>%
  ggplot(aes(YEAR, RANK)) +
  geom_point()
p1

Вот мой примерный набор данных:

Babynames 1880-2008

1 Ответ

1 голос
/ 23 марта 2020

Есть несколько способов сделать это. Следует отметить, что часто функция filter(), которую вы хотите вызвать, dplyr::filter(), часто конфликтует с функцией stats::filter(). По этой причине я обычно явно называю dplyr::filter() (вместо использования только filter()).

Во-вторых, вы также можете извлечь данные для фильтрации, используя subset(df, ...) в аргументе data любой функции ggplot. Поэтому приведенный ниже код должен показать вам, что вам нужно:

ggplot(df, aes(YEAR, RANK)) +
    geom_point(data=subset(df, NAME=='Madison' & GENDER=='girl'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...