Создать параллельную гистограмму из данных dplyr summaze () [R] - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь изучить R, выполняя некоторый исследовательский анализ данных на этом наборе данных: https://www.cdc.gov/brfss/. Идея состоит в том, чтобы использовать как dplyr , так и ggplot2 .

У меня есть следующий код:

brfss2013 %>%
  filter(!is.na(menthlth), !is.na(veteran3)) %>%
  group_by(menthlth) %>%
  summarise(vcount = sum(veteran3 == "Yes"), nvcount = sum(veteran3 == "No"))

Я бы хотел создать линейную гистограмму с осью x, показывающей числа от 0 до 30 (мент.)и ось Y показывает vcount слева и nvcount справа (для каждого значения menthlth).Я знаю, что могу связать последнюю строку моего кода со строкой ggplot, но я не понимаю, как создать параллельную диаграмму.

Я попытался присвоить вывод суммируем с переменной, чтобы я мог использовать команду melt или что-то подобное, но это привело к ошибке ("объект" veteran3 "не найден").Есть ли более простой способ построить две переменные рядом друг с другом напрямую?

Спасибо за вашу помощь, и извините, если я упускаю что-то очевидное.

РЕДАКТИРОВАТЬ: Я теперь назначилрезультат для переменной a , а dput(head(a, 10)) дает

structure(list(menthlth = 0:9, vcount = c(46931L, 1221L, 1861L, 1083L, 545L, 1323L, 197L, 466L, 105L, 22L), nvcount = c(287025L, 13964L, 21633L, 12505L, 6111L, 15312L, 1664L, 5882L, 1139L, 175L)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame" ))

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

У меня нет доступа к вашим данным, но на основе вашего примера я сделал следующий набор данных:

dt<-data.frame(menthlth=sample( c(1:10),10),
               vcount=sample( c(1:1000),10),
               nvcount=sample( c(1:1000),10))

Вам необходимо сначала пересмотреть структуру вашего набора данных:

NewDT<- data.frame(menthlth= dt$menthlth,
                  category=c(rep("vcount",length(dt$menthlth)),rep("nvcount",length(dt$menthlth) )),
                    value=c(dt$vcount,dt$nvcount)) 

и они составляют диаграмму:

library(ggplot2)

ggplot(data=NewDT, aes(x=menthlth, y=value, fill=category)) +
  geom_bar(stat="identity", position=position_dodge())

результат:

enter image description here

0 голосов
/ 13 сентября 2018
library(tidyverse)
# dat_ <- structure(list(menthlth = 0:9, vcount = c(46931L, 1221L, 1861L, 1083L, 545L, 1323L, 197L, 466L, 105L, 22L), nvcount = c(287025L, 13964L, 21633L, 12505L, 6111L, 15312L, 1664L, 5882L, 1139L, 175L)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame" ))

plot_dat <- dat_ %>% gather(group,y, 2:3) # reshape your data frame for plotting - 

ggplot()+ 
  geom_col(data = plot_dat, 
           aes(as.character(menthlth), y, fill = group),
           position = position_dodge())

Вы должны сделать свой x дискретным (as.character(menthlth)). И используйте position = position_dodge(), потому что столбцы иначе сложены (попробуйте опустить его)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...